package migrations import ( "embed" "fmt" "io/fs" "github.com/pressly/goose/v3" ) //go:embed sqlite/*.sql mysql/*.sql var FS embed.FS func ForDriver(driver string) (goose.Dialect, fs.FS, error) { switch driver { case "sqlite": subFS, err := fs.Sub(FS, "sqlite") if err != nil { return goose.DialectSQLite3, nil, fmt.Errorf("SQLite 迁移资源不可用: %w", err) } return goose.DialectSQLite3, subFS, nil case "mysql": subFS, err := fs.Sub(FS, "mysql") if err != nil { return goose.DialectMySQL, nil, fmt.Errorf("MySQL 迁移资源不可用: %w", err) } return goose.DialectMySQL, subFS, nil default: return goose.DialectSQLite3, nil, fmt.Errorf("不支持的数据库驱动: %s,仅支持 sqlite 或 mysql", driver) } }