package migrate import ( "context" "embed" "fmt" "sort" "strings" "ai-service/internal/store" ) //go:embed sql/*.up.sql var migrationFiles embed.FS func Up(ctx context.Context, db *store.Store) error { entries, err := migrationFiles.ReadDir("sql") if err != nil { return err } var names []string for _, entry := range entries { if !entry.IsDir() && strings.HasSuffix(entry.Name(), ".up.sql") { names = append(names, entry.Name()) } } sort.Strings(names) for _, name := range names { body, err := migrationFiles.ReadFile("sql/" + name) if err != nil { return err } if err := db.Exec(ctx, string(body)); err != nil { return fmt.Errorf("%s: %w", name, err) } } return nil }