1package goose
2
3import (
4 "fmt"
5
6 "github.com/pressly/goose/v3/database"
7 "github.com/pressly/goose/v3/internal/dialect"
8)
9
10// Dialect is the type of database dialect. It is an alias for [database.Dialect].
11type Dialect = database.Dialect
12
13const (
14 DialectClickHouse Dialect = database.DialectClickHouse
15 DialectMSSQL Dialect = database.DialectMSSQL
16 DialectMySQL Dialect = database.DialectMySQL
17 DialectPostgres Dialect = database.DialectPostgres
18 DialectRedshift Dialect = database.DialectRedshift
19 DialectSQLite3 Dialect = database.DialectSQLite3
20 DialectTiDB Dialect = database.DialectTiDB
21 DialectVertica Dialect = database.DialectVertica
22 DialectYdB Dialect = database.DialectYdB
23 DialectStarrocks Dialect = database.DialectStarrocks
24)
25
26func init() {
27 store, _ = dialect.NewStore(dialect.Postgres)
28}
29
30var store dialect.Store
31
32// SetDialect sets the dialect to use for the goose package.
33func SetDialect(s string) error {
34 var d dialect.Dialect
35 switch s {
36 case "postgres", "pgx":
37 d = dialect.Postgres
38 case "mysql":
39 d = dialect.Mysql
40 case "sqlite3", "sqlite":
41 d = dialect.Sqlite3
42 case "mssql", "azuresql", "sqlserver":
43 d = dialect.Sqlserver
44 case "redshift":
45 d = dialect.Redshift
46 case "tidb":
47 d = dialect.Tidb
48 case "clickhouse":
49 d = dialect.Clickhouse
50 case "vertica":
51 d = dialect.Vertica
52 case "ydb":
53 d = dialect.Ydb
54 case "turso":
55 d = dialect.Turso
56 case "starrocks":
57 d = dialect.Starrocks
58 default:
59 return fmt.Errorf("%q: unknown dialect", s)
60 }
61 var err error
62 store, err = dialect.NewStore(d)
63 return err
64}