(db *sql.DB)
| 51 | } |
| 52 | |
| 53 | func NewSqliteKeyChangesTable(db *sql.DB) (tables.KeyChanges, error) { |
| 54 | s := &keyChangesStatements{ |
| 55 | db: db, |
| 56 | } |
| 57 | _, err := db.Exec(keyChangesSchema) |
| 58 | if err != nil { |
| 59 | return s, err |
| 60 | } |
| 61 | // TODO: Remove when we are sure we are not having goose artefacts in the db |
| 62 | // This forces an error, which indicates the migration is already applied, since the |
| 63 | // column partition was removed from the table |
| 64 | var count int |
| 65 | err = db.QueryRow("SELECT partition FROM keyserver_key_changes LIMIT 1;").Scan(&count) |
| 66 | if err == nil { |
| 67 | m := sqlutil.NewMigrator(db) |
| 68 | m.AddMigrations(sqlutil.Migration{ |
| 69 | Version: "keyserver: refactor key changes", |
| 70 | Up: deltas.UpRefactorKeyChanges, |
| 71 | }) |
| 72 | return s, m.Up(context.Background()) |
| 73 | } |
| 74 | |
| 75 | return s, nil |
| 76 | } |
| 77 | |
| 78 | func (s *keyChangesStatements) Prepare() (err error) { |
| 79 | if s.upsertKeyChangeStmt, err = s.db.Prepare(upsertKeyChangeSQL); err != nil { |
no test coverage detected