dialect.go

 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}