MCPcopy Create free account
hub / github.com/daodst/chat / NewPostgresKeyChangesTable

Function NewPostgresKeyChangesTable

keyserver/storage/postgres/key_changes_table.go:57–90  ·  view source on GitHub ↗
(db *sql.DB)

Source from the content-addressed store, hash-verified

55}
56
57func NewPostgresKeyChangesTable(db *sql.DB) (tables.KeyChanges, error) {
58 s := &keyChangesStatements{
59 db: db,
60 }
61 _, err := db.Exec(keyChangesSchema)
62 if err != nil {
63 return s, err
64 }
65
66 // TODO: Remove when we are sure we are not having goose artefacts in the db
67 // This forces an error, which indicates the migration is already applied, since the
68 // column partition was removed from the table
69 var count int
70 err = db.QueryRow("SELECT partition FROM keyserver_key_changes LIMIT 1;").Scan(&count)
71 if err == nil {
72 m := sqlutil.NewMigrator(db)
73 m.AddMigrations(sqlutil.Migration{
74 Version: "keyserver: refactor key changes",
75 Up: deltas.UpRefactorKeyChanges,
76 })
77 return s, m.Up(context.Background())
78 } else {
79 switch e := err.(type) {
80 case *pq.Error:
81 // ignore undefined_column (42703) errors, as this is expected at this point
82 if e.Code != "42703" {
83 return nil, err
84 }
85 default:
86 return nil, err
87 }
88 }
89 return s, nil
90}
91
92func (s *keyChangesStatements) Prepare() (err error) {
93 if s.upsertKeyChangeStmt, err = s.db.Prepare(upsertKeyChangeSQL); err != nil {

Callers 1

NewDatabaseFunction · 0.85

Calls 2

AddMigrationsMethod · 0.95
UpMethod · 0.95

Tested by

no test coverage detected