Files
upstream-ory-keto/oryx/popx/migration_content.go
upstream-mirror 9456a4e922
Some checks failed
CI / Run lints and checks (push) Failing after 47s
CI / Run tests (push) Failing after 1s
CI / Run race tests (push) Failing after 5s
CI / Build CLI docs (push) Has been skipped
CI / Run buf actions (push) Failing after 5s
CodeQL / Analyze (go) (push) Failing after 3s
CodeQL / Analyze (javascript) (push) Failing after 2s
Docker Image Scanners / scanners (push) Failing after 3s
Format / format (push) Failing after 3s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Draft newsletter (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
snapshot of https://github.com/ory/keto.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:08:34 +05:00

55 lines
1.4 KiB
Go

// Copyright © 2023 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package popx
import (
"bytes"
"text/template"
"github.com/pkg/errors"
"github.com/ory/pop/v6"
"github.com/ory/x/dbal"
)
func ParameterizedMigrationContent(params map[string]interface{}) func(mf Migration, c *pop.Connection, r []byte, usingTemplate bool) (string, error) {
return func(mf Migration, c *pop.Connection, b []byte, usingTemplate bool) (string, error) {
content := ""
if usingTemplate {
t := template.New("migration")
t.Funcs(SQLTemplateFuncs)
t, err := t.Parse(string(b))
if err != nil {
return "", errors.Wrapf(err, "could not parse template %s", mf.Path)
}
var bb bytes.Buffer
err = t.Execute(&bb, struct {
IsSQLite bool
IsCockroach bool
IsMySQL bool
IsMariaDB bool
IsPostgreSQL bool
DialectDetails *pop.ConnectionDetails
Parameters map[string]interface{}
}{
IsSQLite: c.Dialect.Name() == "sqlite3",
IsCockroach: c.Dialect.Name() == "cockroach",
IsMySQL: c.Dialect.Name() == "mysql",
IsMariaDB: c.Dialect.Name() == "mariadb",
IsPostgreSQL: dbal.IsPostgresCompatible(c.Dialect.Name()),
DialectDetails: c.Dialect.Details(),
Parameters: params,
})
if err != nil {
return "", errors.Wrapf(err, "could not execute migration template %s", mf.Path)
}
content = bb.String()
} else {
content = string(b)
}
return content, nil
}
}