From 958db532d2bacd834525df1023ec8da01ad17000 Mon Sep 17 00:00:00 2001 From: Lucas Bremgartner Date: Mon, 3 Mar 2025 16:49:48 +0100 Subject: [PATCH 1/3] generate-database: Abstract DB connection / DB transaction Signed-off-by: Lucas Bremgartner --- cmd/generate-database/db/constants.go | 2 + cmd/generate-database/db/method.go | 90 +++++++++---------- .../file/boilerplate/boilerplate.go | 20 ++++- 3 files changed, 63 insertions(+), 49 deletions(-) diff --git a/cmd/generate-database/db/constants.go b/cmd/generate-database/db/constants.go index 880efd7d595..cb219766241 100644 --- a/cmd/generate-database/db/constants.go +++ b/cmd/generate-database/db/constants.go @@ -4,6 +4,8 @@ package db // Imports is a list of the package imports every generated source file has. var Imports = []string{ + "context", "database/sql", "fmt", + "strings", } diff --git a/cmd/generate-database/db/method.go b/cmd/generate-database/db/method.go index d34db2e16af..eeba52a42a4 100644 --- a/cmd/generate-database/db/method.go +++ b/cmd/generate-database/db/method.go @@ -200,7 +200,7 @@ func (m *Method) getMany(buf *file.Buffer) error { buf.L("queryStr = strings.Join(queryParts, \" ORDER BY\")") } else if mapping.Type == AssociationTable { filter := m.config["struct"] + "ID" - buf.L("sqlStmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "objects", filter)) + buf.L("sqlStmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "objects", filter)) m.ifErrNotNil(buf, true, "nil", fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "objects", filter))) @@ -215,7 +215,7 @@ func (m *Method) getMany(buf *file.Buffer) error { buf.N() buf.L("if len(filters) == 0 {") - buf.L("sqlStmt, err = Stmt(tx, %s)", stmtCodeVar(m.entity, "objects")) + buf.L("sqlStmt, err = Stmt(db, %s)", stmtCodeVar(m.entity, "objects")) m.ifErrNotNil(buf, false, "nil", fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "objects"))) buf.L("}") @@ -243,7 +243,7 @@ func (m *Method) getMany(buf *file.Buffer) error { buf.L("args = append(args, []any{%s}...)", args) buf.L("if len(filters) == 1 {") - buf.L("sqlStmt, err = Stmt(tx, %s)", stmtCodeVar(m.entity, "objects", filter...)) + buf.L("sqlStmt, err = Stmt(db, %s)", stmtCodeVar(m.entity, "objects", filter...)) m.ifErrNotNil(buf, true, "nil", fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "objects", filter...))) buf.L("break") @@ -282,13 +282,13 @@ func (m *Method) getMany(buf *file.Buffer) error { buf.L("objects, err = get%s(ctx, sqlStmt, args...)", lex.Plural(mapping.Name)) buf.L("} else {") buf.L("queryStr := strings.Join(queryParts[:], \"ORDER BY\")") - buf.L("objects, err = get%sRaw(ctx, tx, queryStr, args...)", lex.Plural(mapping.Name)) + buf.L("objects, err = get%sRaw(ctx, db, queryStr, args...)", lex.Plural(mapping.Name)) buf.L("}") buf.N() m.ifErrNotNil(buf, true, "nil", fmt.Sprintf(`fmt.Errorf("Failed to fetch from \"%s\" table: %%w", err)`, entityTable(m.entity, m.config["table"]))) } else if mapping.Type == ReferenceTable || mapping.Type == MapTable { buf.L("// Select.") - buf.L("objects, err = get%sRaw(ctx, tx, queryStr, parent, args...)", lex.Plural(mapping.Name)) + buf.L("objects, err = get%sRaw(ctx, db, queryStr, parent, args...)", lex.Plural(mapping.Name)) m.ifErrNotNil(buf, true, "nil", fmt.Sprintf(`fmt.Errorf("Failed to fetch from \"%%s_%s\" table: %%w", parent, err)`, entityTable(m.entity, m.config["table"]))) } else { buf.N() @@ -344,10 +344,10 @@ func (m *Method) getMany(buf *file.Buffer) error { buf.N() if mapping.Type == ReferenceTable { // A reference table should let its child reference know about its parent. - buf.L("%s, err := Get%s(ctx, tx, parent+\"_%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) + buf.L("%s, err := Get%s(ctx, db, parent+\"_%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) m.ifErrNotNil(buf, true, "nil", "err") } else { - buf.L("%s, err := Get%s(ctx, tx, \"%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) + buf.L("%s, err := Get%s(ctx, db, \"%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) m.ifErrNotNil(buf, true, "nil", "err") } @@ -382,10 +382,10 @@ func (m *Method) getMany(buf *file.Buffer) error { buf.N() if mapping.Type == ReferenceTable { // A reference table should let its child reference know about its parent. - buf.L("%s, err := Get%s(ctx, tx, parent+\"_%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) + buf.L("%s, err := Get%s(ctx, db, parent+\"_%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) m.ifErrNotNil(buf, true, "nil", "err") } else { - buf.L("%s, err := Get%s(ctx, tx, \"%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) + buf.L("%s, err := Get%s(ctx, db, \"%s\", %sFilters...)", refSlice, lex.Plural(refStruct), m.entity, refVar) m.ifErrNotNil(buf, true, "nil", "err") } @@ -407,7 +407,7 @@ func (m *Method) getMany(buf *file.Buffer) error { ref := strings.Replace(mapping.Name, m.config["struct"], "", -1) buf.L("result := make([]%s, len(objects))", ref) buf.L("for i, object := range objects {") - buf.L("%s, err := Get%s(ctx, tx, %sFilter{ID: &object.%sID})", lex.Minuscule(ref), lex.Plural(ref), ref, ref) + buf.L("%s, err := Get%s(ctx, db, %sFilter{ID: &object.%sID})", lex.Minuscule(ref), lex.Plural(ref), ref, ref) m.ifErrNotNil(buf, true, "nil", "err") buf.L("result[i] = %s[0]", lex.Minuscule(ref)) @@ -465,7 +465,7 @@ func (m *Method) getRefs(buf *file.Buffer, refMapping *Mapping) error { switch refMapping.Type { case ReferenceTable: - buf.L("%s, err := Get%s(ctx, tx, \"%s\", filters...)", refParentList, lex.Plural(refStruct), m.entity) + buf.L("%s, err := Get%s(ctx, db, \"%s\", filters...)", refParentList, lex.Plural(refStruct), m.entity) m.ifErrNotNil(buf, true, "nil", "err") buf.L("%s := map[string]%s{}", refList, refStruct) buf.L("for _, ref := range %s[%sID] {", refParentList, refParent) @@ -478,7 +478,7 @@ func (m *Method) getRefs(buf *file.Buffer, refMapping *Mapping) error { buf.L("}") buf.N() case MapTable: - buf.L("%s, err := Get%s(ctx, tx, \"%s\", filters...)", refParentList, lex.Plural(refStruct), m.entity) + buf.L("%s, err := Get%s(ctx, db, \"%s\", filters...)", refParentList, lex.Plural(refStruct), m.entity) m.ifErrNotNil(buf, true, "nil", "err") buf.L("%s, ok := %s[%sID]", refList, refParentList, refParent) buf.L("if !ok {") @@ -518,7 +518,7 @@ func (m *Method) getOne(buf *file.Buffer) error { } buf.N() - buf.L("objects, err := Get%s(ctx, tx, filter)", lex.Plural(lex.PascalCase(m.entity))) + buf.L("objects, err := Get%s(ctx, db, filter)", lex.Plural(lex.PascalCase(m.entity))) if mapping.Type == ReferenceTable || mapping.Type == MapTable { m.ifErrNotNil(buf, true, "nil", fmt.Sprintf(`fmt.Errorf("Failed to fetch from \"%%s_%s\" table: %%w", parent, err)`, entityTable(m.entity, m.config["table"]))) } else { @@ -558,7 +558,7 @@ func (m *Method) id(buf *file.Buffer) error { defer m.end(buf) - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "ID")) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "ID")) m.ifErrNotNil(buf, true, "-1", fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "ID"))) @@ -603,7 +603,7 @@ func (m *Method) exists(buf *file.Buffer) error { defer m.end(buf) - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "ID")) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "ID")) m.ifErrNotNil(buf, true, "false", fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "ID"))) @@ -686,10 +686,10 @@ func (m *Method) create(buf *file.Buffer, replace bool) error { refFields := mapping.RefFields() if len(refFields) == 0 { - buf.L("_, err := tx.ExecContext(ctx, queryStr, %s)", createParams) + buf.L("_, err := db.ExecContext(ctx, queryStr, %s)", createParams) m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Insert failed for \"%%s_%s\" table: %%w", parent, err)`, lex.Plural(m.entity))) } else { - buf.L("result, err := tx.ExecContext(ctx, queryStr, %s)", createParams) + buf.L("result, err := db.ExecContext(ctx, queryStr, %s)", createParams) m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Insert failed for \"%%s_%s\" table: %%w", parent, err)`, lex.Plural(m.entity))) buf.L("id, err := result.LastInsertId()") m.ifErrNotNil(buf, true, "fmt.Errorf(\"Failed to fetch ID: %w\", err)") @@ -707,7 +707,7 @@ func (m *Method) create(buf *file.Buffer, replace bool) error { kind = "create_or_replace" } else { buf.L("// Check if a %s with the same key exists.", m.entity) - buf.L("exists, err := %sExists(ctx, tx, %s)", lex.PascalCase(m.entity), strings.Join(nkParams, ", ")) + buf.L("exists, err := %sExists(ctx, db, %s)", lex.PascalCase(m.entity), strings.Join(nkParams, ", ")) m.ifErrNotNil(buf, true, "-1", "fmt.Errorf(\"Failed to check for duplicates: %w\", err)") buf.L("if exists {") buf.L(` return -1, ErrConflict`) @@ -738,7 +738,7 @@ func (m *Method) create(buf *file.Buffer, replace bool) error { buf.N() buf.L("// Prepared statement to use. ") - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, kind)) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, kind)) if mapping.Type == AssociationTable { m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, kind))) @@ -772,7 +772,7 @@ func (m *Method) create(buf *file.Buffer, replace bool) error { assocStruct := mapping.Name + refStruct buf.L("// Update association table.") buf.L("object.ID = int(id)") - buf.L("err = Update%s(ctx, tx, object)", lex.Plural(assocStruct)) + buf.L("err = Update%s(ctx, db, object)", lex.Plural(assocStruct)) m.ifErrNotNil(buf, true, "-1", fmt.Sprintf("fmt.Errorf(\"Could not update association table: %%w\", err)")) continue case ReferenceTable: @@ -791,10 +791,10 @@ func (m *Method) create(buf *file.Buffer, replace bool) error { } if mapping.Type != EntityTable { - buf.L("err = Create%s(ctx, tx, parent + \"_%s\", insert)", refStruct, m.entity) + buf.L("err = Create%s(ctx, db, parent + \"_%s\", insert)", refStruct, m.entity) m.ifErrNotNil(buf, false, fmt.Sprintf("fmt.Errorf(\"Insert %s failed for %s: %%w\", err)", field.Name, mapping.Name)) } else { - buf.L("err = Create%s(ctx, tx, \"%s\", insert)", refStruct, m.entity) + buf.L("err = Create%s(ctx, db, \"%s\", insert)", refStruct, m.entity) m.ifErrNotNil(buf, false, "-1", fmt.Sprintf("fmt.Errorf(\"Insert %s failed for %s: %%w\", err)", field.Name, mapping.Name)) } @@ -837,7 +837,7 @@ func (m *Method) createRefs(buf *file.Buffer, refMapping *Mapping) error { buf.L("%s[key] = %s", lex.Plural(refVar), refVar) buf.L("}") buf.N() - buf.L("err := Create%s(ctx, tx, \"%s\", %s)", lex.Plural(refStruct), m.entity, lex.Plural(refVar)) + buf.L("err := Create%s(ctx, db, \"%s\", %s)", lex.Plural(refStruct), m.entity, lex.Plural(refVar)) m.ifErrNotNil(buf, false, fmt.Sprintf("fmt.Errorf(\"Insert %s failed for %s: %%w\", err)", refStruct, lex.PascalCase(m.entity))) case MapTable: buf.L("referenceID := int(%sID)", refParent) @@ -849,7 +849,7 @@ func (m *Method) createRefs(buf *file.Buffer, refMapping *Mapping) error { buf.L("}") buf.N() - buf.L("err := Create%s(ctx, tx, \"%s\", insert)", refStruct, m.entity) + buf.L("err := Create%s(ctx, db, \"%s\", insert)", refStruct, m.entity) m.ifErrNotNil(buf, true, fmt.Sprintf("fmt.Errorf(\"Insert %s failed for %s: %%w\", err)", refStruct, lex.PascalCase(m.entity))) buf.L("}") } @@ -875,7 +875,7 @@ func (m *Method) rename(buf *file.Buffer) error { defer m.end(buf) - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "rename")) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "rename")) m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "rename"))) @@ -942,22 +942,22 @@ func (m *Method) update(buf *file.Buffer) error { refSlice := lex.Minuscule(lex.Plural(mapping.Name)) buf.L("// Delete current entry.") - buf.L("err := Delete%s%s(ctx, tx, %sID)", m.config["struct"], lex.Plural(ref), lex.Minuscule(m.config["struct"])) + buf.L("err := Delete%s%s(ctx, db, %sID)", m.config["struct"], lex.Plural(ref), lex.Minuscule(m.config["struct"])) m.ifErrNotNil(buf, true, "err") buf.L("// Get new entry IDs.") buf.L("%s := make([]%s, 0, len(%s%s))", refSlice, mapping.Name, lex.Minuscule(ref), lex.Plural(refMapping.Identifier().Name)) buf.L("for _, entry := range %s%s {", lex.Minuscule(ref), lex.Plural(refMapping.Identifier().Name)) - buf.L("refID, err := Get%sID(ctx, tx, entry)", ref) + buf.L("refID, err := Get%sID(ctx, db, entry)", ref) m.ifErrNotNil(buf, true, "err") fields := fmt.Sprintf("%sID: %sID, %sID: int(refID)", m.config["struct"], lex.Minuscule(m.config["struct"]), ref) buf.L("%s = append(%s, %s{%s})", refSlice, refSlice, mapping.Name, fields) buf.L("}") buf.N() - buf.L("err = Create%s%s(ctx, tx, %s)", m.config["struct"], lex.Plural(ref), refSlice) + buf.L("err = Create%s%s(ctx, db, %s)", m.config["struct"], lex.Plural(ref), refSlice) m.ifErrNotNil(buf, true, "err") case ReferenceTable: buf.L("// Delete current entry.") - buf.L("err := Delete%s(ctx, tx, parent, referenceID)", lex.PascalCase(lex.Plural(m.entity))) + buf.L("err := Delete%s(ctx, db, parent, referenceID)", lex.PascalCase(lex.Plural(m.entity))) m.ifErrNotNil(buf, true, "err") buf.L("// Insert new entries.") buf.L("for key, object := range %s {", lex.Plural(m.entity)) @@ -965,11 +965,11 @@ func (m *Method) update(buf *file.Buffer) error { buf.L("%s[key] = object", lex.Plural(m.entity)) buf.L("}") buf.N() - buf.L("err = Create%s(ctx, tx, parent, %s)", lex.PascalCase(lex.Plural(m.entity)), lex.Plural(m.entity)) + buf.L("err = Create%s(ctx, db, parent, %s)", lex.PascalCase(lex.Plural(m.entity)), lex.Plural(m.entity)) m.ifErrNotNil(buf, true, "err") case MapTable: buf.L("// Delete current entry.") - buf.L("err := Delete%s(ctx, tx, parent, referenceID)", lex.PascalCase(lex.Plural(m.entity))) + buf.L("err := Delete%s(ctx, db, parent, referenceID)", lex.PascalCase(lex.Plural(m.entity))) m.ifErrNotNil(buf, true, "err") buf.L("// Insert new entries.") buf.L("for key, value := range config {") @@ -980,7 +980,7 @@ func (m *Method) update(buf *file.Buffer) error { buf.L("}") buf.N() - buf.L("err = Create%s(ctx, tx, parent, object)", lex.PascalCase(m.entity)) + buf.L("err = Create%s(ctx, db, parent, object)", lex.PascalCase(m.entity)) m.ifErrNotNil(buf, false, "err") buf.L("}") buf.N() @@ -990,9 +990,9 @@ func (m *Method) update(buf *file.Buffer) error { return fmt.Errorf("Parse entity struct: %w", err) } - buf.L("id, err := Get%sID(ctx, tx, %s)", lex.PascalCase(m.entity), mapping.FieldParams(nk)) + buf.L("id, err := Get%sID(ctx, db, %s)", lex.PascalCase(m.entity), mapping.FieldParams(nk)) m.ifErrNotNil(buf, true, "err") - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "update")) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "update")) m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "update"))) @@ -1034,13 +1034,13 @@ func (m *Method) update(buf *file.Buffer) error { assocStruct := mapping.Name + refStruct buf.L("// Update association table.") buf.L("object.ID = int(id)") - buf.L("err = Update%s(ctx, tx, object)", lex.Plural(assocStruct)) + buf.L("err = Update%s(ctx, db, object)", lex.Plural(assocStruct)) m.ifErrNotNil(buf, true, "fmt.Errorf(\"Could not update association table: %w\", err)") case ReferenceTable: - buf.L("err = Update%s(ctx, tx, \"%s\", int(id), object.%s)", lex.Singular(field.Name), m.entity, field.Name) + buf.L("err = Update%s(ctx, db, \"%s\", int(id), object.%s)", lex.Singular(field.Name), m.entity, field.Name) m.ifErrNotNil(buf, true, fmt.Sprintf("fmt.Errorf(\"Replace %s for %s failed: %%w\", err)", field.Name, mapping.Name)) case MapTable: - buf.L("err = Update%s(ctx, tx, \"%s\", int(id), object.%s)", lex.Singular(field.Name), m.entity, field.Name) + buf.L("err = Update%s(ctx, db, \"%s\", int(id), object.%s)", lex.Singular(field.Name), m.entity, field.Name) m.ifErrNotNil(buf, true, fmt.Sprintf("fmt.Errorf(\"Replace %s for %s failed: %%w\", err)", field.Name, mapping.Name)) buf.N() } @@ -1069,7 +1069,7 @@ func (m *Method) updateRefs(buf *file.Buffer, refMapping *Mapping) error { refList := lex.Plural(refVar) refParent := lex.CamelCase(m.entity) - buf.L("err := Update%s(ctx, tx, \"%s\", int(%sID), %s)", lex.Plural(refStruct), m.entity, refParent, refList) + buf.L("err := Update%s(ctx, db, \"%s\", int(%sID), %s)", lex.Plural(refStruct), m.entity, refParent, refList) m.ifErrNotNil(buf, true, fmt.Sprintf("fmt.Errorf(\"Replace %s for %s failed: %%w\", err)", refStruct, lex.PascalCase(m.entity))) buf.L("return nil") @@ -1089,7 +1089,7 @@ func (m *Method) delete(buf *file.Buffer, deleteOne bool) error { defer m.end(buf) if mapping.Type == AssociationTable { - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "delete", m.config["struct"]+"ID")) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "delete", m.config["struct"]+"ID")) m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Failed to get \"%s\" prepared statement: %%w", err)`, stmtCodeVar(m.entity, "delete", m.config["struct"]+"ID"))) buf.L("result, err := stmt.Exec(int(%sID))", lex.Minuscule(m.config["struct"])) @@ -1104,11 +1104,11 @@ func (m *Method) delete(buf *file.Buffer, deleteOne bool) error { buf.L("}") buf.N() buf.L("queryStr := fmt.Sprintf(%s, fillParent...)", stmtLocal) - buf.L("result, err := tx.ExecContext(ctx, queryStr, referenceID)") + buf.L("result, err := db.ExecContext(ctx, queryStr, referenceID)") m.ifErrNotNil(buf, true, fmt.Sprintf(`fmt.Errorf("Delete entry for \"%%s_%s\" failed: %%w", parent, err)`, m.entity)) } else { activeFilters := mapping.ActiveFilters(m.kind) - buf.L("stmt, err := Stmt(tx, %s)", stmtCodeVar(m.entity, "delete", FieldNames(activeFilters)...)) + buf.L("stmt, err := Stmt(db, %s)", stmtCodeVar(m.entity, "delete", FieldNames(activeFilters)...)) for _, field := range activeFilters { if util.IsTrue(field.Config.Get("marshal")) { @@ -1150,7 +1150,7 @@ func (m *Method) signature(buf *file.Buffer, isInterface bool) error { } comment := "" - args := "ctx context.Context, tx *sql.Tx, " + args := "ctx context.Context, db dbtx, " rets := "" switch mapping.Type { @@ -1508,16 +1508,16 @@ func (m *Method) getManyTemplateFuncs(buf *file.Buffer, mapping *Mapping) error // Create a function supporting raw queries. buf.L("// get%sRaw can be used to run handwritten query strings to return a slice of objects.", lex.Plural(mapping.Name)) if mapping.Type != ReferenceTable && mapping.Type != MapTable { - buf.L("func get%sRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]%s, error) {", lex.Plural(mapping.Name), mapping.Name) + buf.L("func get%sRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]%s, error) {", lex.Plural(mapping.Name), mapping.Name) } else { - buf.L("func get%sRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, args ...any) ([]%s, error) {", lex.Plural(mapping.Name), mapping.Name) + buf.L("func get%sRaw(ctx context.Context, db dbtx, sql string, parent string, args ...any) ([]%s, error) {", lex.Plural(mapping.Name), mapping.Name) } buf.L("objects := make([]%s, 0)", mapping.Name) buf.N() buf.L("dest := %s", destFunc("objects", lex.PascalCase(m.entity), mapping.ColumnFields())) buf.N() - buf.L("err := scan(ctx, tx, sql, dest, args...)") + buf.L("err := scan(ctx, db, sql, dest, args...)") if mapping.Type != ReferenceTable && mapping.Type != MapTable { m.ifErrNotNil(buf, true, "nil", fmt.Sprintf(`fmt.Errorf("Failed to fetch from \"%s\" table: %%w", err)`, tableName)) } else { diff --git a/cmd/generate-database/file/boilerplate/boilerplate.go b/cmd/generate-database/file/boilerplate/boilerplate.go index 88182a2440b..75170845fae 100644 --- a/cmd/generate-database/file/boilerplate/boilerplate.go +++ b/cmd/generate-database/file/boilerplate/boilerplate.go @@ -7,6 +7,13 @@ import ( "fmt" ) +type dbtx interface { + ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error) + PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) + QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error) + QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row +} + // RegisterStmt register a SQL statement. // // Registered statements will be prepared upfront and re-used, to speed up @@ -42,13 +49,18 @@ var stmts = map[int]string{} // Statement code to statement SQL text. var PreparedStmts = map[int]*sql.Stmt{} // Stmt prepares the in-memory prepared statement for the transaction. -func Stmt(tx *sql.Tx, code int) (*sql.Stmt, error) { +func Stmt(db dbtx, code int) (*sql.Stmt, error) { stmt, ok := PreparedStmts[code] if !ok { return nil, fmt.Errorf("No prepared statement registered with code %d", code) } - return tx.Stmt(stmt), nil + tx, ok := db.(*sql.Tx) + if ok { + return tx.Stmt(stmt), nil + } + + return stmt, nil } // StmtString returns the in-memory query string with the given code. @@ -138,8 +150,8 @@ func selectObjects(ctx context.Context, stmt *sql.Stmt, rowFunc dest, args ...an // scan runs a query with inArgs and provides the rowFunc with the scan function for each row. // It handles closing the rows and errors from the result set. -func scan(ctx context.Context, tx *sql.Tx, sqlStmt string, rowFunc dest, inArgs ...any) error { - rows, err := tx.QueryContext(ctx, sqlStmt, inArgs...) +func scan(ctx context.Context, db dbtx, sqlStmt string, rowFunc dest, inArgs ...any) error { + rows, err := db.QueryContext(ctx, sqlStmt, inArgs...) if err != nil { return err } From 84f8ad985ca4da6957166104a87b41df9dc3a87e Mon Sep 17 00:00:00 2001 From: Lucas Bremgartner Date: Mon, 3 Mar 2025 16:56:02 +0100 Subject: [PATCH 2/3] incusd/db: Update generated code Signed-off-by: Lucas Bremgartner --- .../certificate_projects.interface.mapper.go | 13 +-- .../db/cluster/certificate_projects.mapper.go | 26 ++--- .../cluster/certificates.interface.mapper.go | 17 ++-- .../server/db/cluster/certificates.mapper.go | 46 ++++----- .../cluster_groups.interface.mapper.go | 27 +++-- .../db/cluster/cluster_groups.mapper.go | 56 +++++------ .../db/cluster/config.interface.mapper.go | 13 +-- internal/server/db/cluster/config.mapper.go | 22 ++--- .../db/cluster/devices.interface.mapper.go | 13 +-- internal/server/db/cluster/devices.mapper.go | 26 ++--- .../db/cluster/images.interface.mapper.go | 9 +- internal/server/db/cluster/images.mapper.go | 28 +++--- .../instance_profiles.interface.mapper.go | 13 +-- .../db/cluster/instance_profiles.mapper.go | 24 ++--- .../db/cluster/instances.interface.mapper.go | 33 +++---- .../server/db/cluster/instances.mapper.go | 98 +++++++++---------- .../server/db/cluster/mapper_boilerplate.go | 20 +++- .../networks_integrations.interface.mapper.go | 27 +++-- .../cluster/networks_integrations.mapper.go | 58 +++++------ .../db/cluster/nodes.interface.mapper.go | 7 +- internal/server/db/cluster/nodes.mapper.go | 4 +- .../db/cluster/nodes_cluster_groups.mapper.go | 30 +++--- .../db/cluster/operations.interface.mapper.go | 13 +-- .../server/db/cluster/operations.mapper.go | 28 +++--- .../db/cluster/profiles.interface.mapper.go | 33 +++---- internal/server/db/cluster/profiles.mapper.go | 74 +++++++------- .../db/cluster/projects.interface.mapper.go | 23 ++--- internal/server/db/cluster/projects.mapper.go | 48 ++++----- .../db/cluster/snapshots.interface.mapper.go | 27 +++-- .../server/db/cluster/snapshots.mapper.go | 58 +++++------ .../db/cluster/warnings.interface.mapper.go | 17 ++-- internal/server/db/cluster/warnings.mapper.go | 42 ++++---- 32 files changed, 471 insertions(+), 502 deletions(-) diff --git a/internal/server/db/cluster/certificate_projects.interface.mapper.go b/internal/server/db/cluster/certificate_projects.interface.mapper.go index 7dd02c092bb..0c520ace82f 100644 --- a/internal/server/db/cluster/certificate_projects.interface.mapper.go +++ b/internal/server/db/cluster/certificate_projects.interface.mapper.go @@ -2,26 +2,23 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // CertificateProjectGenerated is an interface of generated methods for CertificateProject. type CertificateProjectGenerated interface { // GetCertificateProjects returns all available Projects for the Certificate. // generator: certificate_project GetMany - GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) ([]Project, error) + GetCertificateProjects(ctx context.Context, db dbtx, certificateID int) ([]Project, error) // DeleteCertificateProjects deletes the certificate_project matching the given key parameters. // generator: certificate_project DeleteMany - DeleteCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) error + DeleteCertificateProjects(ctx context.Context, db dbtx, certificateID int) error // CreateCertificateProjects adds a new certificate_project to the database. // generator: certificate_project Create - CreateCertificateProjects(ctx context.Context, tx *sql.Tx, objects []CertificateProject) error + CreateCertificateProjects(ctx context.Context, db dbtx, objects []CertificateProject) error // UpdateCertificateProjects updates the certificate_project matching the given key parameters. // generator: certificate_project Update - UpdateCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int, projectNames []string) error + UpdateCertificateProjects(ctx context.Context, db dbtx, certificateID int, projectNames []string) error } diff --git a/internal/server/db/cluster/certificate_projects.mapper.go b/internal/server/db/cluster/certificate_projects.mapper.go index 8d932c3f21e..6b7bc3847e0 100644 --- a/internal/server/db/cluster/certificate_projects.mapper.go +++ b/internal/server/db/cluster/certificate_projects.mapper.go @@ -63,7 +63,7 @@ func getCertificateProjects(ctx context.Context, stmt *sql.Stmt, args ...any) ([ } // getCertificateProjectsRaw can be used to run handwritten query strings to return a slice of objects. -func getCertificateProjectsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]CertificateProject, error) { +func getCertificateProjectsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]CertificateProject, error) { objects := make([]CertificateProject, 0) dest := func(scan func(dest ...any) error) error { @@ -78,7 +78,7 @@ func getCertificateProjectsRaw(ctx context.Context, tx *sql.Tx, sql string, args return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"certificates_projects\" table: %w", err) } @@ -88,7 +88,7 @@ func getCertificateProjectsRaw(ctx context.Context, tx *sql.Tx, sql string, args // GetCertificateProjects returns all available Projects for the Certificate. // generator: certificate_project GetMany -func GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) (_ []Project, _err error) { +func GetCertificateProjects(ctx context.Context, db dbtx, certificateID int) (_ []Project, _err error) { defer func() { _err = mapErr(_err, "Certificate_project") }() @@ -98,7 +98,7 @@ func GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) // Result slice. objects := make([]CertificateProject, 0) - sqlStmt, err := Stmt(tx, certificateProjectObjectsByCertificateID) + sqlStmt, err := Stmt(db, certificateProjectObjectsByCertificateID) if err != nil { return nil, fmt.Errorf("Failed to get \"certificateProjectObjectsByCertificateID\" prepared statement: %w", err) } @@ -113,7 +113,7 @@ func GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) result := make([]Project, len(objects)) for i, object := range objects { - project, err := GetProjects(ctx, tx, ProjectFilter{ID: &object.ProjectID}) + project, err := GetProjects(ctx, db, ProjectFilter{ID: &object.ProjectID}) if err != nil { return nil, err } @@ -126,12 +126,12 @@ func GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) // DeleteCertificateProjects deletes the certificate_project matching the given key parameters. // generator: certificate_project DeleteMany -func DeleteCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) (_err error) { +func DeleteCertificateProjects(ctx context.Context, db dbtx, certificateID int) (_err error) { defer func() { _err = mapErr(_err, "Certificate_project") }() - stmt, err := Stmt(tx, certificateProjectDeleteByCertificateID) + stmt, err := Stmt(db, certificateProjectDeleteByCertificateID) if err != nil { return fmt.Errorf("Failed to get \"certificateProjectDeleteByCertificateID\" prepared statement: %w", err) } @@ -151,7 +151,7 @@ func DeleteCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID in // CreateCertificateProjects adds a new certificate_project to the database. // generator: certificate_project Create -func CreateCertificateProjects(ctx context.Context, tx *sql.Tx, objects []CertificateProject) (_err error) { +func CreateCertificateProjects(ctx context.Context, db dbtx, objects []CertificateProject) (_err error) { defer func() { _err = mapErr(_err, "Certificate_project") }() @@ -164,7 +164,7 @@ func CreateCertificateProjects(ctx context.Context, tx *sql.Tx, objects []Certif args[1] = object.ProjectID // Prepared statement to use. - stmt, err := Stmt(tx, certificateProjectCreate) + stmt, err := Stmt(db, certificateProjectCreate) if err != nil { return fmt.Errorf("Failed to get \"certificateProjectCreate\" prepared statement: %w", err) } @@ -182,13 +182,13 @@ func CreateCertificateProjects(ctx context.Context, tx *sql.Tx, objects []Certif // UpdateCertificateProjects updates the certificate_project matching the given key parameters. // generator: certificate_project Update -func UpdateCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int, projectNames []string) (_err error) { +func UpdateCertificateProjects(ctx context.Context, db dbtx, certificateID int, projectNames []string) (_err error) { defer func() { _err = mapErr(_err, "Certificate_project") }() // Delete current entry. - err := DeleteCertificateProjects(ctx, tx, certificateID) + err := DeleteCertificateProjects(ctx, db, certificateID) if err != nil { return err } @@ -196,7 +196,7 @@ func UpdateCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID in // Get new entry IDs. certificateProjects := make([]CertificateProject, 0, len(projectNames)) for _, entry := range projectNames { - refID, err := GetProjectID(ctx, tx, entry) + refID, err := GetProjectID(ctx, db, entry) if err != nil { return err } @@ -204,7 +204,7 @@ func UpdateCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID in certificateProjects = append(certificateProjects, CertificateProject{CertificateID: certificateID, ProjectID: int(refID)}) } - err = CreateCertificateProjects(ctx, tx, certificateProjects) + err = CreateCertificateProjects(ctx, db, certificateProjects) if err != nil { return err } diff --git a/internal/server/db/cluster/certificates.interface.mapper.go b/internal/server/db/cluster/certificates.interface.mapper.go index 635de2b0a7f..c3c6bf19e2f 100644 --- a/internal/server/db/cluster/certificates.interface.mapper.go +++ b/internal/server/db/cluster/certificates.interface.mapper.go @@ -4,7 +4,6 @@ package cluster import ( "context" - "database/sql" "github.com/lxc/incus/v6/internal/server/certificate" ) @@ -13,33 +12,33 @@ import ( type CertificateGenerated interface { // GetCertificates returns all available certificates. // generator: certificate GetMany - GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilter) ([]Certificate, error) + GetCertificates(ctx context.Context, db dbtx, filters ...CertificateFilter) ([]Certificate, error) // GetCertificate returns the certificate with the given key. // generator: certificate GetOne - GetCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (*Certificate, error) + GetCertificate(ctx context.Context, db dbtx, fingerprint string) (*Certificate, error) // GetCertificateID return the ID of the certificate with the given key. // generator: certificate ID - GetCertificateID(ctx context.Context, tx *sql.Tx, fingerprint string) (int64, error) + GetCertificateID(ctx context.Context, db dbtx, fingerprint string) (int64, error) // CertificateExists checks if a certificate with the given key exists. // generator: certificate Exists - CertificateExists(ctx context.Context, tx *sql.Tx, fingerprint string) (bool, error) + CertificateExists(ctx context.Context, db dbtx, fingerprint string) (bool, error) // CreateCertificate adds a new certificate to the database. // generator: certificate Create - CreateCertificate(ctx context.Context, tx *sql.Tx, object Certificate) (int64, error) + CreateCertificate(ctx context.Context, db dbtx, object Certificate) (int64, error) // DeleteCertificate deletes the certificate matching the given key parameters. // generator: certificate DeleteOne-by-Fingerprint - DeleteCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) error + DeleteCertificate(ctx context.Context, db dbtx, fingerprint string) error // DeleteCertificates deletes the certificate matching the given key parameters. // generator: certificate DeleteMany-by-Name-and-Type - DeleteCertificates(ctx context.Context, tx *sql.Tx, name string, certificateType certificate.Type) error + DeleteCertificates(ctx context.Context, db dbtx, name string, certificateType certificate.Type) error // UpdateCertificate updates the certificate matching the given key parameters. // generator: certificate Update - UpdateCertificate(ctx context.Context, tx *sql.Tx, fingerprint string, object Certificate) error + UpdateCertificate(ctx context.Context, db dbtx, fingerprint string, object Certificate) error } diff --git a/internal/server/db/cluster/certificates.mapper.go b/internal/server/db/cluster/certificates.mapper.go index 07a44c7fc77..6674abd4546 100644 --- a/internal/server/db/cluster/certificates.mapper.go +++ b/internal/server/db/cluster/certificates.mapper.go @@ -89,7 +89,7 @@ func getCertificates(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Certif } // getCertificatesRaw can be used to run handwritten query strings to return a slice of objects. -func getCertificatesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Certificate, error) { +func getCertificatesRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Certificate, error) { objects := make([]Certificate, 0) dest := func(scan func(dest ...any) error) error { @@ -104,7 +104,7 @@ func getCertificatesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"certificates\" table: %w", err) } @@ -114,7 +114,7 @@ func getCertificatesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any // GetCertificates returns all available certificates. // generator: certificate GetMany -func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilter) (_ []Certificate, _err error) { +func GetCertificates(ctx context.Context, db dbtx, filters ...CertificateFilter) (_ []Certificate, _err error) { defer func() { _err = mapErr(_err, "Certificate") }() @@ -130,7 +130,7 @@ func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilt queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, certificateObjects) + sqlStmt, err = Stmt(db, certificateObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"certificateObjects\" prepared statement: %w", err) } @@ -140,7 +140,7 @@ func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilt if filter.ID != nil && filter.Fingerprint == nil && filter.Name == nil && filter.Type == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, certificateObjectsByID) + sqlStmt, err = Stmt(db, certificateObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"certificateObjectsByID\" prepared statement: %w", err) } @@ -164,7 +164,7 @@ func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilt } else if filter.Fingerprint != nil && filter.ID == nil && filter.Name == nil && filter.Type == nil { args = append(args, []any{filter.Fingerprint}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, certificateObjectsByFingerprint) + sqlStmt, err = Stmt(db, certificateObjectsByFingerprint) if err != nil { return nil, fmt.Errorf("Failed to get \"certificateObjectsByFingerprint\" prepared statement: %w", err) } @@ -197,7 +197,7 @@ func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilt objects, err = getCertificates(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getCertificatesRaw(ctx, tx, queryStr, args...) + objects, err = getCertificatesRaw(ctx, db, queryStr, args...) } if err != nil { @@ -209,7 +209,7 @@ func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilt // GetCertificate returns the certificate with the given key. // generator: certificate GetOne -func GetCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (_ *Certificate, _err error) { +func GetCertificate(ctx context.Context, db dbtx, fingerprint string) (_ *Certificate, _err error) { defer func() { _err = mapErr(_err, "Certificate") }() @@ -217,7 +217,7 @@ func GetCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (_ *Cer filter := CertificateFilter{} filter.Fingerprint = &fingerprint - objects, err := GetCertificates(ctx, tx, filter) + objects, err := GetCertificates(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"certificates\" table: %w", err) } @@ -234,12 +234,12 @@ func GetCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (_ *Cer // GetCertificateID return the ID of the certificate with the given key. // generator: certificate ID -func GetCertificateID(ctx context.Context, tx *sql.Tx, fingerprint string) (_ int64, _err error) { +func GetCertificateID(ctx context.Context, db dbtx, fingerprint string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Certificate") }() - stmt, err := Stmt(tx, certificateID) + stmt, err := Stmt(db, certificateID) if err != nil { return -1, fmt.Errorf("Failed to get \"certificateID\" prepared statement: %w", err) } @@ -260,12 +260,12 @@ func GetCertificateID(ctx context.Context, tx *sql.Tx, fingerprint string) (_ in // CertificateExists checks if a certificate with the given key exists. // generator: certificate Exists -func CertificateExists(ctx context.Context, tx *sql.Tx, fingerprint string) (_ bool, _err error) { +func CertificateExists(ctx context.Context, db dbtx, fingerprint string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Certificate") }() - stmt, err := Stmt(tx, certificateID) + stmt, err := Stmt(db, certificateID) if err != nil { return false, fmt.Errorf("Failed to get \"certificateID\" prepared statement: %w", err) } @@ -286,13 +286,13 @@ func CertificateExists(ctx context.Context, tx *sql.Tx, fingerprint string) (_ b // CreateCertificate adds a new certificate to the database. // generator: certificate Create -func CreateCertificate(ctx context.Context, tx *sql.Tx, object Certificate) (_ int64, _err error) { +func CreateCertificate(ctx context.Context, db dbtx, object Certificate) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Certificate") }() // Check if a certificate with the same key exists. - exists, err := CertificateExists(ctx, tx, object.Fingerprint) + exists, err := CertificateExists(ctx, db, object.Fingerprint) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -312,7 +312,7 @@ func CreateCertificate(ctx context.Context, tx *sql.Tx, object Certificate) (_ i args[5] = object.Description // Prepared statement to use. - stmt, err := Stmt(tx, certificateCreate) + stmt, err := Stmt(db, certificateCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"certificateCreate\" prepared statement: %w", err) } @@ -333,12 +333,12 @@ func CreateCertificate(ctx context.Context, tx *sql.Tx, object Certificate) (_ i // DeleteCertificate deletes the certificate matching the given key parameters. // generator: certificate DeleteOne-by-Fingerprint -func DeleteCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (_err error) { +func DeleteCertificate(ctx context.Context, db dbtx, fingerprint string) (_err error) { defer func() { _err = mapErr(_err, "Certificate") }() - stmt, err := Stmt(tx, certificateDeleteByFingerprint) + stmt, err := Stmt(db, certificateDeleteByFingerprint) if err != nil { return fmt.Errorf("Failed to get \"certificateDeleteByFingerprint\" prepared statement: %w", err) } @@ -364,12 +364,12 @@ func DeleteCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (_er // DeleteCertificates deletes the certificate matching the given key parameters. // generator: certificate DeleteMany-by-Name-and-Type -func DeleteCertificates(ctx context.Context, tx *sql.Tx, name string, certificateType certificate.Type) (_err error) { +func DeleteCertificates(ctx context.Context, db dbtx, name string, certificateType certificate.Type) (_err error) { defer func() { _err = mapErr(_err, "Certificate") }() - stmt, err := Stmt(tx, certificateDeleteByNameAndType) + stmt, err := Stmt(db, certificateDeleteByNameAndType) if err != nil { return fmt.Errorf("Failed to get \"certificateDeleteByNameAndType\" prepared statement: %w", err) } @@ -389,17 +389,17 @@ func DeleteCertificates(ctx context.Context, tx *sql.Tx, name string, certificat // UpdateCertificate updates the certificate matching the given key parameters. // generator: certificate Update -func UpdateCertificate(ctx context.Context, tx *sql.Tx, fingerprint string, object Certificate) (_err error) { +func UpdateCertificate(ctx context.Context, db dbtx, fingerprint string, object Certificate) (_err error) { defer func() { _err = mapErr(_err, "Certificate") }() - id, err := GetCertificateID(ctx, tx, fingerprint) + id, err := GetCertificateID(ctx, db, fingerprint) if err != nil { return err } - stmt, err := Stmt(tx, certificateUpdate) + stmt, err := Stmt(db, certificateUpdate) if err != nil { return fmt.Errorf("Failed to get \"certificateUpdate\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/cluster_groups.interface.mapper.go b/internal/server/db/cluster/cluster_groups.interface.mapper.go index 811e8d9835a..07c3074d78a 100644 --- a/internal/server/db/cluster/cluster_groups.interface.mapper.go +++ b/internal/server/db/cluster/cluster_groups.interface.mapper.go @@ -2,54 +2,51 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // ClusterGroupGenerated is an interface of generated methods for ClusterGroup. type ClusterGroupGenerated interface { // GetClusterGroupConfig returns all available ClusterGroup Config // generator: cluster_group GetMany - GetClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int, filters ...ConfigFilter) (map[string]string, error) + GetClusterGroupConfig(ctx context.Context, db dbtx, clusterGroupID int, filters ...ConfigFilter) (map[string]string, error) // GetClusterGroups returns all available cluster_groups. // generator: cluster_group GetMany - GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFilter) ([]ClusterGroup, error) + GetClusterGroups(ctx context.Context, db dbtx, filters ...ClusterGroupFilter) ([]ClusterGroup, error) // GetClusterGroup returns the cluster_group with the given key. // generator: cluster_group GetOne - GetClusterGroup(ctx context.Context, tx *sql.Tx, name string) (*ClusterGroup, error) + GetClusterGroup(ctx context.Context, db dbtx, name string) (*ClusterGroup, error) // GetClusterGroupID return the ID of the cluster_group with the given key. // generator: cluster_group ID - GetClusterGroupID(ctx context.Context, tx *sql.Tx, name string) (int64, error) + GetClusterGroupID(ctx context.Context, db dbtx, name string) (int64, error) // ClusterGroupExists checks if a cluster_group with the given key exists. // generator: cluster_group Exists - ClusterGroupExists(ctx context.Context, tx *sql.Tx, name string) (bool, error) + ClusterGroupExists(ctx context.Context, db dbtx, name string) (bool, error) // RenameClusterGroup renames the cluster_group matching the given key parameters. // generator: cluster_group Rename - RenameClusterGroup(ctx context.Context, tx *sql.Tx, name string, to string) error + RenameClusterGroup(ctx context.Context, db dbtx, name string, to string) error // CreateClusterGroupConfig adds new cluster_group Config to the database. // generator: cluster_group Create - CreateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) error + CreateClusterGroupConfig(ctx context.Context, db dbtx, clusterGroupID int64, config map[string]string) error // CreateClusterGroup adds a new cluster_group to the database. // generator: cluster_group Create - CreateClusterGroup(ctx context.Context, tx *sql.Tx, object ClusterGroup) (int64, error) + CreateClusterGroup(ctx context.Context, db dbtx, object ClusterGroup) (int64, error) // UpdateClusterGroupConfig updates the cluster_group Config matching the given key parameters. // generator: cluster_group Update - UpdateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) error + UpdateClusterGroupConfig(ctx context.Context, db dbtx, clusterGroupID int64, config map[string]string) error // UpdateClusterGroup updates the cluster_group matching the given key parameters. // generator: cluster_group Update - UpdateClusterGroup(ctx context.Context, tx *sql.Tx, name string, object ClusterGroup) error + UpdateClusterGroup(ctx context.Context, db dbtx, name string, object ClusterGroup) error // DeleteClusterGroup deletes the cluster_group matching the given key parameters. // generator: cluster_group DeleteOne-by-Name - DeleteClusterGroup(ctx context.Context, tx *sql.Tx, name string) error + DeleteClusterGroup(ctx context.Context, db dbtx, name string) error } diff --git a/internal/server/db/cluster/cluster_groups.mapper.go b/internal/server/db/cluster/cluster_groups.mapper.go index 35b123c4165..6094dd70e03 100644 --- a/internal/server/db/cluster/cluster_groups.mapper.go +++ b/internal/server/db/cluster/cluster_groups.mapper.go @@ -80,7 +80,7 @@ func getClusterGroups(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Clust } // getClusterGroupsRaw can be used to run handwritten query strings to return a slice of objects. -func getClusterGroupsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]ClusterGroup, error) { +func getClusterGroupsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]ClusterGroup, error) { objects := make([]ClusterGroup, 0) dest := func(scan func(dest ...any) error) error { @@ -95,7 +95,7 @@ func getClusterGroupsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...an return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"clusters_groups\" table: %w", err) } @@ -105,7 +105,7 @@ func getClusterGroupsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...an // GetClusterGroups returns all available cluster_groups. // generator: cluster_group GetMany -func GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFilter) (_ []ClusterGroup, _err error) { +func GetClusterGroups(ctx context.Context, db dbtx, filters ...ClusterGroupFilter) (_ []ClusterGroup, _err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() @@ -121,7 +121,7 @@ func GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFi queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, clusterGroupObjects) + sqlStmt, err = Stmt(db, clusterGroupObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"clusterGroupObjects\" prepared statement: %w", err) } @@ -131,7 +131,7 @@ func GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFi if filter.Name != nil && filter.ID == nil { args = append(args, []any{filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, clusterGroupObjectsByName) + sqlStmt, err = Stmt(db, clusterGroupObjectsByName) if err != nil { return nil, fmt.Errorf("Failed to get \"clusterGroupObjectsByName\" prepared statement: %w", err) } @@ -164,7 +164,7 @@ func GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFi objects, err = getClusterGroups(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getClusterGroupsRaw(ctx, tx, queryStr, args...) + objects, err = getClusterGroupsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -176,12 +176,12 @@ func GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFi // GetClusterGroupConfig returns all available ClusterGroup Config // generator: cluster_group GetMany -func GetClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int, filters ...ConfigFilter) (_ map[string]string, _err error) { +func GetClusterGroupConfig(ctx context.Context, db dbtx, clusterGroupID int, filters ...ConfigFilter) (_ map[string]string, _err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - clusterGroupConfig, err := GetConfig(ctx, tx, "cluster_group", filters...) + clusterGroupConfig, err := GetConfig(ctx, db, "cluster_group", filters...) if err != nil { return nil, err } @@ -196,7 +196,7 @@ func GetClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int, // GetClusterGroup returns the cluster_group with the given key. // generator: cluster_group GetOne -func GetClusterGroup(ctx context.Context, tx *sql.Tx, name string) (_ *ClusterGroup, _err error) { +func GetClusterGroup(ctx context.Context, db dbtx, name string) (_ *ClusterGroup, _err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() @@ -204,7 +204,7 @@ func GetClusterGroup(ctx context.Context, tx *sql.Tx, name string) (_ *ClusterGr filter := ClusterGroupFilter{} filter.Name = &name - objects, err := GetClusterGroups(ctx, tx, filter) + objects, err := GetClusterGroups(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"clusters_groups\" table: %w", err) } @@ -221,12 +221,12 @@ func GetClusterGroup(ctx context.Context, tx *sql.Tx, name string) (_ *ClusterGr // GetClusterGroupID return the ID of the cluster_group with the given key. // generator: cluster_group ID -func GetClusterGroupID(ctx context.Context, tx *sql.Tx, name string) (_ int64, _err error) { +func GetClusterGroupID(ctx context.Context, db dbtx, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - stmt, err := Stmt(tx, clusterGroupID) + stmt, err := Stmt(db, clusterGroupID) if err != nil { return -1, fmt.Errorf("Failed to get \"clusterGroupID\" prepared statement: %w", err) } @@ -247,12 +247,12 @@ func GetClusterGroupID(ctx context.Context, tx *sql.Tx, name string) (_ int64, _ // ClusterGroupExists checks if a cluster_group with the given key exists. // generator: cluster_group Exists -func ClusterGroupExists(ctx context.Context, tx *sql.Tx, name string) (_ bool, _err error) { +func ClusterGroupExists(ctx context.Context, db dbtx, name string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - stmt, err := Stmt(tx, clusterGroupID) + stmt, err := Stmt(db, clusterGroupID) if err != nil { return false, fmt.Errorf("Failed to get \"clusterGroupID\" prepared statement: %w", err) } @@ -273,12 +273,12 @@ func ClusterGroupExists(ctx context.Context, tx *sql.Tx, name string) (_ bool, _ // RenameClusterGroup renames the cluster_group matching the given key parameters. // generator: cluster_group Rename -func RenameClusterGroup(ctx context.Context, tx *sql.Tx, name string, to string) (_err error) { +func RenameClusterGroup(ctx context.Context, db dbtx, name string, to string) (_err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - stmt, err := Stmt(tx, clusterGroupRename) + stmt, err := Stmt(db, clusterGroupRename) if err != nil { return fmt.Errorf("Failed to get \"clusterGroupRename\" prepared statement: %w", err) } @@ -302,13 +302,13 @@ func RenameClusterGroup(ctx context.Context, tx *sql.Tx, name string, to string) // CreateClusterGroup adds a new cluster_group to the database. // generator: cluster_group Create -func CreateClusterGroup(ctx context.Context, tx *sql.Tx, object ClusterGroup) (_ int64, _err error) { +func CreateClusterGroup(ctx context.Context, db dbtx, object ClusterGroup) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() // Check if a cluster_group with the same key exists. - exists, err := ClusterGroupExists(ctx, tx, object.Name) + exists, err := ClusterGroupExists(ctx, db, object.Name) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -324,7 +324,7 @@ func CreateClusterGroup(ctx context.Context, tx *sql.Tx, object ClusterGroup) (_ args[1] = object.Description // Prepared statement to use. - stmt, err := Stmt(tx, clusterGroupCreate) + stmt, err := Stmt(db, clusterGroupCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"clusterGroupCreate\" prepared statement: %w", err) } @@ -345,7 +345,7 @@ func CreateClusterGroup(ctx context.Context, tx *sql.Tx, object ClusterGroup) (_ // CreateClusterGroupConfig adds new cluster_group Config to the database. // generator: cluster_group Create -func CreateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) (_err error) { +func CreateClusterGroupConfig(ctx context.Context, db dbtx, clusterGroupID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() @@ -358,7 +358,7 @@ func CreateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID in Value: value, } - err := CreateConfig(ctx, tx, "cluster_group", insert) + err := CreateConfig(ctx, db, "cluster_group", insert) if err != nil { return fmt.Errorf("Insert Config failed for ClusterGroup: %w", err) } @@ -370,17 +370,17 @@ func CreateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID in // UpdateClusterGroup updates the cluster_group matching the given key parameters. // generator: cluster_group Update -func UpdateClusterGroup(ctx context.Context, tx *sql.Tx, name string, object ClusterGroup) (_err error) { +func UpdateClusterGroup(ctx context.Context, db dbtx, name string, object ClusterGroup) (_err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - id, err := GetClusterGroupID(ctx, tx, name) + id, err := GetClusterGroupID(ctx, db, name) if err != nil { return err } - stmt, err := Stmt(tx, clusterGroupUpdate) + stmt, err := Stmt(db, clusterGroupUpdate) if err != nil { return fmt.Errorf("Failed to get \"clusterGroupUpdate\" prepared statement: %w", err) } @@ -404,12 +404,12 @@ func UpdateClusterGroup(ctx context.Context, tx *sql.Tx, name string, object Clu // UpdateClusterGroupConfig updates the cluster_group Config matching the given key parameters. // generator: cluster_group Update -func UpdateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) (_err error) { +func UpdateClusterGroupConfig(ctx context.Context, db dbtx, clusterGroupID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - err := UpdateConfig(ctx, tx, "cluster_group", int(clusterGroupID), config) + err := UpdateConfig(ctx, db, "cluster_group", int(clusterGroupID), config) if err != nil { return fmt.Errorf("Replace Config for ClusterGroup failed: %w", err) } @@ -419,12 +419,12 @@ func UpdateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID in // DeleteClusterGroup deletes the cluster_group matching the given key parameters. // generator: cluster_group DeleteOne-by-Name -func DeleteClusterGroup(ctx context.Context, tx *sql.Tx, name string) (_err error) { +func DeleteClusterGroup(ctx context.Context, db dbtx, name string) (_err error) { defer func() { _err = mapErr(_err, "Cluster_group") }() - stmt, err := Stmt(tx, clusterGroupDeleteByName) + stmt, err := Stmt(db, clusterGroupDeleteByName) if err != nil { return fmt.Errorf("Failed to get \"clusterGroupDeleteByName\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/config.interface.mapper.go b/internal/server/db/cluster/config.interface.mapper.go index 8037adc4280..8e8c5add05b 100644 --- a/internal/server/db/cluster/config.interface.mapper.go +++ b/internal/server/db/cluster/config.interface.mapper.go @@ -2,26 +2,23 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // ConfigGenerated is an interface of generated methods for Config. type ConfigGenerated interface { // GetConfig returns all available config. // generator: config GetMany - GetConfig(ctx context.Context, tx *sql.Tx, parent string, filters ...ConfigFilter) (map[int]map[string]string, error) + GetConfig(ctx context.Context, db dbtx, parent string, filters ...ConfigFilter) (map[int]map[string]string, error) // CreateConfig adds a new config to the database. // generator: config Create - CreateConfig(ctx context.Context, tx *sql.Tx, parent string, object Config) error + CreateConfig(ctx context.Context, db dbtx, parent string, object Config) error // UpdateConfig updates the config matching the given key parameters. // generator: config Update - UpdateConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int, config map[string]string) error + UpdateConfig(ctx context.Context, db dbtx, parent string, referenceID int, config map[string]string) error // DeleteConfig deletes the config matching the given key parameters. // generator: config DeleteMany - DeleteConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int) error + DeleteConfig(ctx context.Context, db dbtx, parent string, referenceID int) error } diff --git a/internal/server/db/cluster/config.mapper.go b/internal/server/db/cluster/config.mapper.go index 1ad45029fdd..10f8516ed63 100644 --- a/internal/server/db/cluster/config.mapper.go +++ b/internal/server/db/cluster/config.mapper.go @@ -51,7 +51,7 @@ func getConfig(ctx context.Context, stmt *sql.Stmt, parent string, args ...any) } // getConfigRaw can be used to run handwritten query strings to return a slice of objects. -func getConfigRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, args ...any) ([]Config, error) { +func getConfigRaw(ctx context.Context, db dbtx, sql string, parent string, args ...any) ([]Config, error) { objects := make([]Config, 0) dest := func(scan func(dest ...any) error) error { @@ -66,7 +66,7 @@ func getConfigRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, ar return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"%s_config\" table: %w", parent, err) } @@ -76,7 +76,7 @@ func getConfigRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, ar // GetConfig returns all available config. // generator: config GetMany -func GetConfig(ctx context.Context, tx *sql.Tx, parent string, filters ...ConfigFilter) (_ map[int]map[string]string, _err error) { +func GetConfig(ctx context.Context, db dbtx, parent string, filters ...ConfigFilter) (_ map[int]map[string]string, _err error) { defer func() { _err = mapErr(_err, "Config") }() @@ -124,7 +124,7 @@ func GetConfig(ctx context.Context, tx *sql.Tx, parent string, filters ...Config queryStr = strings.Join(queryParts, " ORDER BY") // Select. - objects, err = getConfigRaw(ctx, tx, queryStr, parent, args...) + objects, err = getConfigRaw(ctx, db, queryStr, parent, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"%s_config\" table: %w", parent, err) } @@ -144,7 +144,7 @@ func GetConfig(ctx context.Context, tx *sql.Tx, parent string, filters ...Config // CreateConfig adds a new config to the database. // generator: config Create -func CreateConfig(ctx context.Context, tx *sql.Tx, parent string, object Config) (_err error) { +func CreateConfig(ctx context.Context, db dbtx, parent string, object Config) (_err error) { defer func() { _err = mapErr(_err, "Config") }() @@ -161,7 +161,7 @@ func CreateConfig(ctx context.Context, tx *sql.Tx, parent string, object Config) } queryStr := fmt.Sprintf(configCreateLocal, fillParent...) - _, err := tx.ExecContext(ctx, queryStr, object.ReferenceID, object.Key, object.Value) + _, err := db.ExecContext(ctx, queryStr, object.ReferenceID, object.Key, object.Value) if err != nil { return fmt.Errorf("Insert failed for \"%s_config\" table: %w", parent, err) } @@ -171,13 +171,13 @@ func CreateConfig(ctx context.Context, tx *sql.Tx, parent string, object Config) // UpdateConfig updates the config matching the given key parameters. // generator: config Update -func UpdateConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int, config map[string]string) (_err error) { +func UpdateConfig(ctx context.Context, db dbtx, parent string, referenceID int, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Config") }() // Delete current entry. - err := DeleteConfig(ctx, tx, parent, referenceID) + err := DeleteConfig(ctx, db, parent, referenceID) if err != nil { return err } @@ -190,7 +190,7 @@ func UpdateConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID in Value: value, } - err = CreateConfig(ctx, tx, parent, object) + err = CreateConfig(ctx, db, parent, object) if err != nil { return err } @@ -201,7 +201,7 @@ func UpdateConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID in // DeleteConfig deletes the config matching the given key parameters. // generator: config DeleteMany -func DeleteConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int) (_err error) { +func DeleteConfig(ctx context.Context, db dbtx, parent string, referenceID int) (_err error) { defer func() { _err = mapErr(_err, "Config") }() @@ -213,7 +213,7 @@ func DeleteConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID in } queryStr := fmt.Sprintf(configDeleteLocal, fillParent...) - result, err := tx.ExecContext(ctx, queryStr, referenceID) + result, err := db.ExecContext(ctx, queryStr, referenceID) if err != nil { return fmt.Errorf("Delete entry for \"%s_config\" failed: %w", parent, err) } diff --git a/internal/server/db/cluster/devices.interface.mapper.go b/internal/server/db/cluster/devices.interface.mapper.go index bcde3d0c04a..98d230ea51a 100644 --- a/internal/server/db/cluster/devices.interface.mapper.go +++ b/internal/server/db/cluster/devices.interface.mapper.go @@ -2,26 +2,23 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // DeviceGenerated is an interface of generated methods for Device. type DeviceGenerated interface { // GetDevices returns all available devices for the parent entity. // generator: device GetMany - GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...DeviceFilter) (map[int][]Device, error) + GetDevices(ctx context.Context, db dbtx, parent string, filters ...DeviceFilter) (map[int][]Device, error) // CreateDevices adds a new device to the database. // generator: device Create - CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[string]Device) error + CreateDevices(ctx context.Context, db dbtx, parent string, objects map[string]Device) error // UpdateDevices updates the device matching the given key parameters. // generator: device Update - UpdateDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int, devices map[string]Device) error + UpdateDevices(ctx context.Context, db dbtx, parent string, referenceID int, devices map[string]Device) error // DeleteDevices deletes the device matching the given key parameters. // generator: device DeleteMany - DeleteDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int) error + DeleteDevices(ctx context.Context, db dbtx, parent string, referenceID int) error } diff --git a/internal/server/db/cluster/devices.mapper.go b/internal/server/db/cluster/devices.mapper.go index f4f28088d01..c3c981ff77d 100644 --- a/internal/server/db/cluster/devices.mapper.go +++ b/internal/server/db/cluster/devices.mapper.go @@ -51,7 +51,7 @@ func getDevices(ctx context.Context, stmt *sql.Stmt, parent string, args ...any) } // getDevicesRaw can be used to run handwritten query strings to return a slice of objects. -func getDevicesRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, args ...any) ([]Device, error) { +func getDevicesRaw(ctx context.Context, db dbtx, sql string, parent string, args ...any) ([]Device, error) { objects := make([]Device, 0) dest := func(scan func(dest ...any) error) error { @@ -66,7 +66,7 @@ func getDevicesRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, a return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"%s_devices\" table: %w", parent, err) } @@ -76,7 +76,7 @@ func getDevicesRaw(ctx context.Context, tx *sql.Tx, sql string, parent string, a // GetDevices returns all available devices for the parent entity. // generator: device GetMany -func GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...DeviceFilter) (_ map[int][]Device, _err error) { +func GetDevices(ctx context.Context, db dbtx, parent string, filters ...DeviceFilter) (_ map[int][]Device, _err error) { defer func() { _err = mapErr(_err, "Device") }() @@ -124,7 +124,7 @@ func GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...Devic queryStr = strings.Join(queryParts, " ORDER BY") // Select. - objects, err = getDevicesRaw(ctx, tx, queryStr, parent, args...) + objects, err = getDevicesRaw(ctx, db, queryStr, parent, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"%s_devices\" table: %w", parent, err) } @@ -141,7 +141,7 @@ func GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...Devic } } - config, err := GetConfig(ctx, tx, parent+"_device", configFilters...) + config, err := GetConfig(ctx, db, parent+"_device", configFilters...) if err != nil { return nil, err } @@ -170,7 +170,7 @@ func GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...Devic // CreateDevices adds a new device to the database. // generator: device Create -func CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[string]Device) (_err error) { +func CreateDevices(ctx context.Context, db dbtx, parent string, objects map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Device") }() @@ -183,7 +183,7 @@ func CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[s queryStr := fmt.Sprintf(deviceCreateLocal, fillParent...) for _, object := range objects { - result, err := tx.ExecContext(ctx, queryStr, object.ReferenceID, object.Name, object.Type) + result, err := db.ExecContext(ctx, queryStr, object.ReferenceID, object.Name, object.Type) if err != nil { return fmt.Errorf("Insert failed for \"%s_devices\" table: %w", parent, err) } @@ -201,7 +201,7 @@ func CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[s Value: value, } - err = CreateConfig(ctx, tx, parent+"_device", insert) + err = CreateConfig(ctx, db, parent+"_device", insert) if err != nil { return fmt.Errorf("Insert Config failed for Device: %w", err) } @@ -213,13 +213,13 @@ func CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[s // UpdateDevices updates the device matching the given key parameters. // generator: device Update -func UpdateDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int, devices map[string]Device) (_err error) { +func UpdateDevices(ctx context.Context, db dbtx, parent string, referenceID int, devices map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Device") }() // Delete current entry. - err := DeleteDevices(ctx, tx, parent, referenceID) + err := DeleteDevices(ctx, db, parent, referenceID) if err != nil { return err } @@ -230,7 +230,7 @@ func UpdateDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID i devices[key] = object } - err = CreateDevices(ctx, tx, parent, devices) + err = CreateDevices(ctx, db, parent, devices) if err != nil { return err } @@ -240,7 +240,7 @@ func UpdateDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID i // DeleteDevices deletes the device matching the given key parameters. // generator: device DeleteMany -func DeleteDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int) (_err error) { +func DeleteDevices(ctx context.Context, db dbtx, parent string, referenceID int) (_err error) { defer func() { _err = mapErr(_err, "Device") }() @@ -252,7 +252,7 @@ func DeleteDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID i } queryStr := fmt.Sprintf(deviceDeleteLocal, fillParent...) - result, err := tx.ExecContext(ctx, queryStr, referenceID) + result, err := db.ExecContext(ctx, queryStr, referenceID) if err != nil { return fmt.Errorf("Delete entry for \"%s_device\" failed: %w", parent, err) } diff --git a/internal/server/db/cluster/images.interface.mapper.go b/internal/server/db/cluster/images.interface.mapper.go index f9fab1606b3..1cafe170c97 100644 --- a/internal/server/db/cluster/images.interface.mapper.go +++ b/internal/server/db/cluster/images.interface.mapper.go @@ -2,18 +2,15 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // ImageGenerated is an interface of generated methods for Image. type ImageGenerated interface { // GetImages returns all available images. // generator: image GetMany - GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) ([]Image, error) + GetImages(ctx context.Context, db dbtx, filters ...ImageFilter) ([]Image, error) // GetImage returns the image with the given key. // generator: image GetOne - GetImage(ctx context.Context, tx *sql.Tx, project string, fingerprint string) (*Image, error) + GetImage(ctx context.Context, db dbtx, project string, fingerprint string) (*Image, error) } diff --git a/internal/server/db/cluster/images.mapper.go b/internal/server/db/cluster/images.mapper.go index 622d87d367d..8738024241b 100644 --- a/internal/server/db/cluster/images.mapper.go +++ b/internal/server/db/cluster/images.mapper.go @@ -105,7 +105,7 @@ func getImages(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Image, error } // getImagesRaw can be used to run handwritten query strings to return a slice of objects. -func getImagesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Image, error) { +func getImagesRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Image, error) { objects := make([]Image, 0) dest := func(scan func(dest ...any) error) error { @@ -120,7 +120,7 @@ func getImagesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]I return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"images\" table: %w", err) } @@ -130,7 +130,7 @@ func getImagesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]I // GetImages returns all available images. // generator: image GetMany -func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Image, _err error) { +func GetImages(ctx context.Context, db dbtx, filters ...ImageFilter) (_ []Image, _err error) { defer func() { _err = mapErr(_err, "Image") }() @@ -146,7 +146,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, imageObjects) + sqlStmt, err = Stmt(db, imageObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjects\" prepared statement: %w", err) } @@ -156,7 +156,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima if filter.Project != nil && filter.Public != nil && filter.ID == nil && filter.Fingerprint == nil && filter.Cached == nil && filter.AutoUpdate == nil { args = append(args, []any{filter.Project, filter.Public}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByProjectAndPublic) + sqlStmt, err = Stmt(db, imageObjectsByProjectAndPublic) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByProjectAndPublic\" prepared statement: %w", err) } @@ -180,7 +180,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima } else if filter.Project != nil && filter.Cached != nil && filter.ID == nil && filter.Fingerprint == nil && filter.Public == nil && filter.AutoUpdate == nil { args = append(args, []any{filter.Project, filter.Cached}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByProjectAndCached) + sqlStmt, err = Stmt(db, imageObjectsByProjectAndCached) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByProjectAndCached\" prepared statement: %w", err) } @@ -204,7 +204,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima } else if filter.Project != nil && filter.ID == nil && filter.Fingerprint == nil && filter.Public == nil && filter.Cached == nil && filter.AutoUpdate == nil { args = append(args, []any{filter.Project}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByProject) + sqlStmt, err = Stmt(db, imageObjectsByProject) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByProject\" prepared statement: %w", err) } @@ -228,7 +228,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima } else if filter.ID != nil && filter.Project == nil && filter.Fingerprint == nil && filter.Public == nil && filter.Cached == nil && filter.AutoUpdate == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByID) + sqlStmt, err = Stmt(db, imageObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByID\" prepared statement: %w", err) } @@ -252,7 +252,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima } else if filter.Fingerprint != nil && filter.ID == nil && filter.Project == nil && filter.Public == nil && filter.Cached == nil && filter.AutoUpdate == nil { args = append(args, []any{filter.Fingerprint}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByFingerprint) + sqlStmt, err = Stmt(db, imageObjectsByFingerprint) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByFingerprint\" prepared statement: %w", err) } @@ -276,7 +276,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima } else if filter.Cached != nil && filter.ID == nil && filter.Project == nil && filter.Fingerprint == nil && filter.Public == nil && filter.AutoUpdate == nil { args = append(args, []any{filter.Cached}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByCached) + sqlStmt, err = Stmt(db, imageObjectsByCached) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByCached\" prepared statement: %w", err) } @@ -300,7 +300,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima } else if filter.AutoUpdate != nil && filter.ID == nil && filter.Project == nil && filter.Fingerprint == nil && filter.Public == nil && filter.Cached == nil { args = append(args, []any{filter.AutoUpdate}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, imageObjectsByAutoUpdate) + sqlStmt, err = Stmt(db, imageObjectsByAutoUpdate) if err != nil { return nil, fmt.Errorf("Failed to get \"imageObjectsByAutoUpdate\" prepared statement: %w", err) } @@ -333,7 +333,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima objects, err = getImages(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getImagesRaw(ctx, tx, queryStr, args...) + objects, err = getImagesRaw(ctx, db, queryStr, args...) } if err != nil { @@ -345,7 +345,7 @@ func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) (_ []Ima // GetImage returns the image with the given key. // generator: image GetOne -func GetImage(ctx context.Context, tx *sql.Tx, project string, fingerprint string) (_ *Image, _err error) { +func GetImage(ctx context.Context, db dbtx, project string, fingerprint string) (_ *Image, _err error) { defer func() { _err = mapErr(_err, "Image") }() @@ -354,7 +354,7 @@ func GetImage(ctx context.Context, tx *sql.Tx, project string, fingerprint strin filter.Project = &project filter.Fingerprint = &fingerprint - objects, err := GetImages(ctx, tx, filter) + objects, err := GetImages(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"images\" table: %w", err) } diff --git a/internal/server/db/cluster/instance_profiles.interface.mapper.go b/internal/server/db/cluster/instance_profiles.interface.mapper.go index 3d30fe9bdc3..7891a14bc02 100644 --- a/internal/server/db/cluster/instance_profiles.interface.mapper.go +++ b/internal/server/db/cluster/instance_profiles.interface.mapper.go @@ -2,26 +2,23 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // InstanceProfileGenerated is an interface of generated methods for InstanceProfile. type InstanceProfileGenerated interface { // GetProfileInstances returns all available Instances for the Profile. // generator: instance_profile GetMany - GetProfileInstances(ctx context.Context, tx *sql.Tx, profileID int) ([]Instance, error) + GetProfileInstances(ctx context.Context, db dbtx, profileID int) ([]Instance, error) // GetInstanceProfiles returns all available Profiles for the Instance. // generator: instance_profile GetMany - GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) ([]Profile, error) + GetInstanceProfiles(ctx context.Context, db dbtx, instanceID int) ([]Profile, error) // CreateInstanceProfiles adds a new instance_profile to the database. // generator: instance_profile Create - CreateInstanceProfiles(ctx context.Context, tx *sql.Tx, objects []InstanceProfile) error + CreateInstanceProfiles(ctx context.Context, db dbtx, objects []InstanceProfile) error // DeleteInstanceProfiles deletes the instance_profile matching the given key parameters. // generator: instance_profile DeleteMany - DeleteInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) error + DeleteInstanceProfiles(ctx context.Context, db dbtx, instanceID int) error } diff --git a/internal/server/db/cluster/instance_profiles.mapper.go b/internal/server/db/cluster/instance_profiles.mapper.go index e97609191c6..137e51fae85 100644 --- a/internal/server/db/cluster/instance_profiles.mapper.go +++ b/internal/server/db/cluster/instance_profiles.mapper.go @@ -41,7 +41,7 @@ DELETE FROM instances_profiles WHERE instance_id = ? // GetProfileInstances returns all available Instances for the Profile. // generator: instance_profile GetMany -func GetProfileInstances(ctx context.Context, tx *sql.Tx, profileID int) (_ []Instance, _err error) { +func GetProfileInstances(ctx context.Context, db dbtx, profileID int) (_ []Instance, _err error) { defer func() { _err = mapErr(_err, "Instance_profile") }() @@ -51,7 +51,7 @@ func GetProfileInstances(ctx context.Context, tx *sql.Tx, profileID int) (_ []In // Result slice. objects := make([]InstanceProfile, 0) - sqlStmt, err := Stmt(tx, instanceProfileObjectsByProfileID) + sqlStmt, err := Stmt(db, instanceProfileObjectsByProfileID) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceProfileObjectsByProfileID\" prepared statement: %w", err) } @@ -66,7 +66,7 @@ func GetProfileInstances(ctx context.Context, tx *sql.Tx, profileID int) (_ []In result := make([]Instance, len(objects)) for i, object := range objects { - instance, err := GetInstances(ctx, tx, InstanceFilter{ID: &object.InstanceID}) + instance, err := GetInstances(ctx, db, InstanceFilter{ID: &object.InstanceID}) if err != nil { return nil, err } @@ -108,7 +108,7 @@ func getInstanceProfiles(ctx context.Context, stmt *sql.Stmt, args ...any) ([]In } // getInstanceProfilesRaw can be used to run handwritten query strings to return a slice of objects. -func getInstanceProfilesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]InstanceProfile, error) { +func getInstanceProfilesRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]InstanceProfile, error) { objects := make([]InstanceProfile, 0) dest := func(scan func(dest ...any) error) error { @@ -123,7 +123,7 @@ func getInstanceProfilesRaw(ctx context.Context, tx *sql.Tx, sql string, args .. return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"instances_profiles\" table: %w", err) } @@ -133,7 +133,7 @@ func getInstanceProfilesRaw(ctx context.Context, tx *sql.Tx, sql string, args .. // GetInstanceProfiles returns all available Profiles for the Instance. // generator: instance_profile GetMany -func GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) (_ []Profile, _err error) { +func GetInstanceProfiles(ctx context.Context, db dbtx, instanceID int) (_ []Profile, _err error) { defer func() { _err = mapErr(_err, "Instance_profile") }() @@ -143,7 +143,7 @@ func GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) (_ []P // Result slice. objects := make([]InstanceProfile, 0) - sqlStmt, err := Stmt(tx, instanceProfileObjectsByInstanceID) + sqlStmt, err := Stmt(db, instanceProfileObjectsByInstanceID) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceProfileObjectsByInstanceID\" prepared statement: %w", err) } @@ -158,7 +158,7 @@ func GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) (_ []P result := make([]Profile, len(objects)) for i, object := range objects { - profile, err := GetProfiles(ctx, tx, ProfileFilter{ID: &object.ProfileID}) + profile, err := GetProfiles(ctx, db, ProfileFilter{ID: &object.ProfileID}) if err != nil { return nil, err } @@ -171,7 +171,7 @@ func GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) (_ []P // CreateInstanceProfiles adds a new instance_profile to the database. // generator: instance_profile Create -func CreateInstanceProfiles(ctx context.Context, tx *sql.Tx, objects []InstanceProfile) (_err error) { +func CreateInstanceProfiles(ctx context.Context, db dbtx, objects []InstanceProfile) (_err error) { defer func() { _err = mapErr(_err, "Instance_profile") }() @@ -185,7 +185,7 @@ func CreateInstanceProfiles(ctx context.Context, tx *sql.Tx, objects []InstanceP args[2] = object.ApplyOrder // Prepared statement to use. - stmt, err := Stmt(tx, instanceProfileCreate) + stmt, err := Stmt(db, instanceProfileCreate) if err != nil { return fmt.Errorf("Failed to get \"instanceProfileCreate\" prepared statement: %w", err) } @@ -203,12 +203,12 @@ func CreateInstanceProfiles(ctx context.Context, tx *sql.Tx, objects []InstanceP // DeleteInstanceProfiles deletes the instance_profile matching the given key parameters. // generator: instance_profile DeleteMany -func DeleteInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) (_err error) { +func DeleteInstanceProfiles(ctx context.Context, db dbtx, instanceID int) (_err error) { defer func() { _err = mapErr(_err, "Instance_profile") }() - stmt, err := Stmt(tx, instanceProfileDeleteByInstanceID) + stmt, err := Stmt(db, instanceProfileDeleteByInstanceID) if err != nil { return fmt.Errorf("Failed to get \"instanceProfileDeleteByInstanceID\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/instances.interface.mapper.go b/internal/server/db/cluster/instances.interface.mapper.go index 9cfc29462f9..549e8b1af21 100644 --- a/internal/server/db/cluster/instances.interface.mapper.go +++ b/internal/server/db/cluster/instances.interface.mapper.go @@ -2,66 +2,63 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // InstanceGenerated is an interface of generated methods for Instance. type InstanceGenerated interface { // GetInstanceConfig returns all available Instance Config // generator: instance GetMany - GetInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int, filters ...ConfigFilter) (map[string]string, error) + GetInstanceConfig(ctx context.Context, db dbtx, instanceID int, filters ...ConfigFilter) (map[string]string, error) // GetInstanceDevices returns all available Instance Devices // generator: instance GetMany - GetInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int, filters ...DeviceFilter) (map[string]Device, error) + GetInstanceDevices(ctx context.Context, db dbtx, instanceID int, filters ...DeviceFilter) (map[string]Device, error) // GetInstances returns all available instances. // generator: instance GetMany - GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) ([]Instance, error) + GetInstances(ctx context.Context, db dbtx, filters ...InstanceFilter) ([]Instance, error) // GetInstance returns the instance with the given key. // generator: instance GetOne - GetInstance(ctx context.Context, tx *sql.Tx, project string, name string) (*Instance, error) + GetInstance(ctx context.Context, db dbtx, project string, name string) (*Instance, error) // GetInstanceID return the ID of the instance with the given key. // generator: instance ID - GetInstanceID(ctx context.Context, tx *sql.Tx, project string, name string) (int64, error) + GetInstanceID(ctx context.Context, db dbtx, project string, name string) (int64, error) // InstanceExists checks if a instance with the given key exists. // generator: instance Exists - InstanceExists(ctx context.Context, tx *sql.Tx, project string, name string) (bool, error) + InstanceExists(ctx context.Context, db dbtx, project string, name string) (bool, error) // CreateInstanceConfig adds new instance Config to the database. // generator: instance Create - CreateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) error + CreateInstanceConfig(ctx context.Context, db dbtx, instanceID int64, config map[string]string) error // CreateInstanceDevices adds new instance Devices to the database. // generator: instance Create - CreateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) error + CreateInstanceDevices(ctx context.Context, db dbtx, instanceID int64, devices map[string]Device) error // CreateInstance adds a new instance to the database. // generator: instance Create - CreateInstance(ctx context.Context, tx *sql.Tx, object Instance) (int64, error) + CreateInstance(ctx context.Context, db dbtx, object Instance) (int64, error) // RenameInstance renames the instance matching the given key parameters. // generator: instance Rename - RenameInstance(ctx context.Context, tx *sql.Tx, project string, name string, to string) error + RenameInstance(ctx context.Context, db dbtx, project string, name string, to string) error // DeleteInstance deletes the instance matching the given key parameters. // generator: instance DeleteOne-by-Project-and-Name - DeleteInstance(ctx context.Context, tx *sql.Tx, project string, name string) error + DeleteInstance(ctx context.Context, db dbtx, project string, name string) error // UpdateInstanceConfig updates the instance Config matching the given key parameters. // generator: instance Update - UpdateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) error + UpdateInstanceConfig(ctx context.Context, db dbtx, instanceID int64, config map[string]string) error // UpdateInstanceDevices updates the instance Device matching the given key parameters. // generator: instance Update - UpdateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) error + UpdateInstanceDevices(ctx context.Context, db dbtx, instanceID int64, devices map[string]Device) error // UpdateInstance updates the instance matching the given key parameters. // generator: instance Update - UpdateInstance(ctx context.Context, tx *sql.Tx, project string, name string, object Instance) error + UpdateInstance(ctx context.Context, db dbtx, project string, name string, object Instance) error } diff --git a/internal/server/db/cluster/instances.mapper.go b/internal/server/db/cluster/instances.mapper.go index b03e80d103d..a3c9a9cd0c6 100644 --- a/internal/server/db/cluster/instances.mapper.go +++ b/internal/server/db/cluster/instances.mapper.go @@ -220,7 +220,7 @@ func getInstances(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Instance, } // getInstancesRaw can be used to run handwritten query strings to return a slice of objects. -func getInstancesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Instance, error) { +func getInstancesRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Instance, error) { objects := make([]Instance, 0) dest := func(scan func(dest ...any) error) error { @@ -235,7 +235,7 @@ func getInstancesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ( return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"instances\" table: %w", err) } @@ -245,7 +245,7 @@ func getInstancesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ( // GetInstances returns all available instances. // generator: instance GetMany -func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ []Instance, _err error) { +func GetInstances(ctx context.Context, db dbtx, filters ...InstanceFilter) (_ []Instance, _err error) { defer func() { _err = mapErr(_err, "Instance") }() @@ -261,7 +261,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, instanceObjects) + sqlStmt, err = Stmt(db, instanceObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjects\" prepared statement: %w", err) } @@ -271,7 +271,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ if filter.Project != nil && filter.Type != nil && filter.Node != nil && filter.Name != nil && filter.ID == nil { args = append(args, []any{filter.Project, filter.Type, filter.Node, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndTypeAndNodeAndName) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndTypeAndNodeAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndTypeAndNodeAndName\" prepared statement: %w", err) } @@ -295,7 +295,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.Type != nil && filter.Node != nil && filter.ID == nil && filter.Name == nil { args = append(args, []any{filter.Project, filter.Type, filter.Node}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndTypeAndNode) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndTypeAndNode) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndTypeAndNode\" prepared statement: %w", err) } @@ -319,7 +319,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.Type != nil && filter.Name != nil && filter.ID == nil && filter.Node == nil { args = append(args, []any{filter.Project, filter.Type, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndTypeAndName) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndTypeAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndTypeAndName\" prepared statement: %w", err) } @@ -343,7 +343,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Type != nil && filter.Name != nil && filter.Node != nil && filter.ID == nil && filter.Project == nil { args = append(args, []any{filter.Type, filter.Name, filter.Node}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByTypeAndNameAndNode) + sqlStmt, err = Stmt(db, instanceObjectsByTypeAndNameAndNode) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByTypeAndNameAndNode\" prepared statement: %w", err) } @@ -367,7 +367,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.Name != nil && filter.Node != nil && filter.ID == nil && filter.Type == nil { args = append(args, []any{filter.Project, filter.Name, filter.Node}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndNameAndNode) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndNameAndNode) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndNameAndNode\" prepared statement: %w", err) } @@ -391,7 +391,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.Type != nil && filter.ID == nil && filter.Name == nil && filter.Node == nil { args = append(args, []any{filter.Project, filter.Type}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndType) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndType) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndType\" prepared statement: %w", err) } @@ -415,7 +415,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Type != nil && filter.Node != nil && filter.ID == nil && filter.Project == nil && filter.Name == nil { args = append(args, []any{filter.Type, filter.Node}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByTypeAndNode) + sqlStmt, err = Stmt(db, instanceObjectsByTypeAndNode) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByTypeAndNode\" prepared statement: %w", err) } @@ -439,7 +439,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Type != nil && filter.Name != nil && filter.ID == nil && filter.Project == nil && filter.Node == nil { args = append(args, []any{filter.Type, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByTypeAndName) + sqlStmt, err = Stmt(db, instanceObjectsByTypeAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByTypeAndName\" prepared statement: %w", err) } @@ -463,7 +463,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.Node != nil && filter.ID == nil && filter.Name == nil && filter.Type == nil { args = append(args, []any{filter.Project, filter.Node}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndNode) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndNode) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndNode\" prepared statement: %w", err) } @@ -487,7 +487,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.Name != nil && filter.ID == nil && filter.Node == nil && filter.Type == nil { args = append(args, []any{filter.Project, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProjectAndName) + sqlStmt, err = Stmt(db, instanceObjectsByProjectAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProjectAndName\" prepared statement: %w", err) } @@ -511,7 +511,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Node != nil && filter.Name != nil && filter.ID == nil && filter.Project == nil && filter.Type == nil { args = append(args, []any{filter.Node, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByNodeAndName) + sqlStmt, err = Stmt(db, instanceObjectsByNodeAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByNodeAndName\" prepared statement: %w", err) } @@ -535,7 +535,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Type != nil && filter.ID == nil && filter.Project == nil && filter.Name == nil && filter.Node == nil { args = append(args, []any{filter.Type}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByType) + sqlStmt, err = Stmt(db, instanceObjectsByType) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByType\" prepared statement: %w", err) } @@ -559,7 +559,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Project != nil && filter.ID == nil && filter.Name == nil && filter.Node == nil && filter.Type == nil { args = append(args, []any{filter.Project}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByProject) + sqlStmt, err = Stmt(db, instanceObjectsByProject) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByProject\" prepared statement: %w", err) } @@ -583,7 +583,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Node != nil && filter.ID == nil && filter.Project == nil && filter.Name == nil && filter.Type == nil { args = append(args, []any{filter.Node}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByNode) + sqlStmt, err = Stmt(db, instanceObjectsByNode) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByNode\" prepared statement: %w", err) } @@ -607,7 +607,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.Name != nil && filter.ID == nil && filter.Project == nil && filter.Node == nil && filter.Type == nil { args = append(args, []any{filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByName) + sqlStmt, err = Stmt(db, instanceObjectsByName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByName\" prepared statement: %w", err) } @@ -631,7 +631,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ } else if filter.ID != nil && filter.Project == nil && filter.Name == nil && filter.Node == nil && filter.Type == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceObjectsByID) + sqlStmt, err = Stmt(db, instanceObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceObjectsByID\" prepared statement: %w", err) } @@ -664,7 +664,7 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ objects, err = getInstances(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getInstancesRaw(ctx, tx, queryStr, args...) + objects, err = getInstancesRaw(ctx, db, queryStr, args...) } if err != nil { @@ -676,12 +676,12 @@ func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) (_ // GetInstanceDevices returns all available Instance Devices // generator: instance GetMany -func GetInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int, filters ...DeviceFilter) (_ map[string]Device, _err error) { +func GetInstanceDevices(ctx context.Context, db dbtx, instanceID int, filters ...DeviceFilter) (_ map[string]Device, _err error) { defer func() { _err = mapErr(_err, "Instance") }() - instanceDevices, err := GetDevices(ctx, tx, "instance", filters...) + instanceDevices, err := GetDevices(ctx, db, "instance", filters...) if err != nil { return nil, err } @@ -701,12 +701,12 @@ func GetInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int, filters // GetInstanceConfig returns all available Instance Config // generator: instance GetMany -func GetInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int, filters ...ConfigFilter) (_ map[string]string, _err error) { +func GetInstanceConfig(ctx context.Context, db dbtx, instanceID int, filters ...ConfigFilter) (_ map[string]string, _err error) { defer func() { _err = mapErr(_err, "Instance") }() - instanceConfig, err := GetConfig(ctx, tx, "instance", filters...) + instanceConfig, err := GetConfig(ctx, db, "instance", filters...) if err != nil { return nil, err } @@ -721,7 +721,7 @@ func GetInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int, filters // GetInstance returns the instance with the given key. // generator: instance GetOne -func GetInstance(ctx context.Context, tx *sql.Tx, project string, name string) (_ *Instance, _err error) { +func GetInstance(ctx context.Context, db dbtx, project string, name string) (_ *Instance, _err error) { defer func() { _err = mapErr(_err, "Instance") }() @@ -730,7 +730,7 @@ func GetInstance(ctx context.Context, tx *sql.Tx, project string, name string) ( filter.Project = &project filter.Name = &name - objects, err := GetInstances(ctx, tx, filter) + objects, err := GetInstances(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"instances\" table: %w", err) } @@ -747,12 +747,12 @@ func GetInstance(ctx context.Context, tx *sql.Tx, project string, name string) ( // GetInstanceID return the ID of the instance with the given key. // generator: instance ID -func GetInstanceID(ctx context.Context, tx *sql.Tx, project string, name string) (_ int64, _err error) { +func GetInstanceID(ctx context.Context, db dbtx, project string, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Instance") }() - stmt, err := Stmt(tx, instanceID) + stmt, err := Stmt(db, instanceID) if err != nil { return -1, fmt.Errorf("Failed to get \"instanceID\" prepared statement: %w", err) } @@ -773,12 +773,12 @@ func GetInstanceID(ctx context.Context, tx *sql.Tx, project string, name string) // InstanceExists checks if a instance with the given key exists. // generator: instance Exists -func InstanceExists(ctx context.Context, tx *sql.Tx, project string, name string) (_ bool, _err error) { +func InstanceExists(ctx context.Context, db dbtx, project string, name string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Instance") }() - stmt, err := Stmt(tx, instanceID) + stmt, err := Stmt(db, instanceID) if err != nil { return false, fmt.Errorf("Failed to get \"instanceID\" prepared statement: %w", err) } @@ -799,13 +799,13 @@ func InstanceExists(ctx context.Context, tx *sql.Tx, project string, name string // CreateInstance adds a new instance to the database. // generator: instance Create -func CreateInstance(ctx context.Context, tx *sql.Tx, object Instance) (_ int64, _err error) { +func CreateInstance(ctx context.Context, db dbtx, object Instance) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Instance") }() // Check if a instance with the same key exists. - exists, err := InstanceExists(ctx, tx, object.Project, object.Name) + exists, err := InstanceExists(ctx, db, object.Project, object.Name) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -830,7 +830,7 @@ func CreateInstance(ctx context.Context, tx *sql.Tx, object Instance) (_ int64, args[10] = object.ExpiryDate // Prepared statement to use. - stmt, err := Stmt(tx, instanceCreate) + stmt, err := Stmt(db, instanceCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"instanceCreate\" prepared statement: %w", err) } @@ -851,7 +851,7 @@ func CreateInstance(ctx context.Context, tx *sql.Tx, object Instance) (_ int64, // CreateInstanceDevices adds new instance Devices to the database. // generator: instance Create -func CreateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) (_err error) { +func CreateInstanceDevices(ctx context.Context, db dbtx, instanceID int64, devices map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() @@ -861,7 +861,7 @@ func CreateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, de devices[key] = device } - err := CreateDevices(ctx, tx, "instance", devices) + err := CreateDevices(ctx, db, "instance", devices) if err != nil { return fmt.Errorf("Insert Device failed for Instance: %w", err) } @@ -871,7 +871,7 @@ func CreateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, de // CreateInstanceConfig adds new instance Config to the database. // generator: instance Create -func CreateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) (_err error) { +func CreateInstanceConfig(ctx context.Context, db dbtx, instanceID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() @@ -884,7 +884,7 @@ func CreateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, con Value: value, } - err := CreateConfig(ctx, tx, "instance", insert) + err := CreateConfig(ctx, db, "instance", insert) if err != nil { return fmt.Errorf("Insert Config failed for Instance: %w", err) } @@ -896,12 +896,12 @@ func CreateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, con // RenameInstance renames the instance matching the given key parameters. // generator: instance Rename -func RenameInstance(ctx context.Context, tx *sql.Tx, project string, name string, to string) (_err error) { +func RenameInstance(ctx context.Context, db dbtx, project string, name string, to string) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() - stmt, err := Stmt(tx, instanceRename) + stmt, err := Stmt(db, instanceRename) if err != nil { return fmt.Errorf("Failed to get \"instanceRename\" prepared statement: %w", err) } @@ -925,12 +925,12 @@ func RenameInstance(ctx context.Context, tx *sql.Tx, project string, name string // DeleteInstance deletes the instance matching the given key parameters. // generator: instance DeleteOne-by-Project-and-Name -func DeleteInstance(ctx context.Context, tx *sql.Tx, project string, name string) (_err error) { +func DeleteInstance(ctx context.Context, db dbtx, project string, name string) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() - stmt, err := Stmt(tx, instanceDeleteByProjectAndName) + stmt, err := Stmt(db, instanceDeleteByProjectAndName) if err != nil { return fmt.Errorf("Failed to get \"instanceDeleteByProjectAndName\" prepared statement: %w", err) } @@ -956,17 +956,17 @@ func DeleteInstance(ctx context.Context, tx *sql.Tx, project string, name string // UpdateInstance updates the instance matching the given key parameters. // generator: instance Update -func UpdateInstance(ctx context.Context, tx *sql.Tx, project string, name string, object Instance) (_err error) { +func UpdateInstance(ctx context.Context, db dbtx, project string, name string, object Instance) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() - id, err := GetInstanceID(ctx, tx, project, name) + id, err := GetInstanceID(ctx, db, project, name) if err != nil { return err } - stmt, err := Stmt(tx, instanceUpdate) + stmt, err := Stmt(db, instanceUpdate) if err != nil { return fmt.Errorf("Failed to get \"instanceUpdate\" prepared statement: %w", err) } @@ -990,12 +990,12 @@ func UpdateInstance(ctx context.Context, tx *sql.Tx, project string, name string // UpdateInstanceDevices updates the instance Device matching the given key parameters. // generator: instance Update -func UpdateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) (_err error) { +func UpdateInstanceDevices(ctx context.Context, db dbtx, instanceID int64, devices map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() - err := UpdateDevices(ctx, tx, "instance", int(instanceID), devices) + err := UpdateDevices(ctx, db, "instance", int(instanceID), devices) if err != nil { return fmt.Errorf("Replace Device for Instance failed: %w", err) } @@ -1005,12 +1005,12 @@ func UpdateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, de // UpdateInstanceConfig updates the instance Config matching the given key parameters. // generator: instance Update -func UpdateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) (_err error) { +func UpdateInstanceConfig(ctx context.Context, db dbtx, instanceID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Instance") }() - err := UpdateConfig(ctx, tx, "instance", int(instanceID), config) + err := UpdateConfig(ctx, db, "instance", int(instanceID), config) if err != nil { return fmt.Errorf("Replace Config for Instance failed: %w", err) } diff --git a/internal/server/db/cluster/mapper_boilerplate.go b/internal/server/db/cluster/mapper_boilerplate.go index 970a758d007..4c392aa5c9d 100644 --- a/internal/server/db/cluster/mapper_boilerplate.go +++ b/internal/server/db/cluster/mapper_boilerplate.go @@ -9,6 +9,13 @@ import ( "fmt" ) +type dbtx interface { + ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error) + PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) + QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error) + QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row +} + // RegisterStmt register a SQL statement. // // Registered statements will be prepared upfront and re-used, to speed up @@ -44,13 +51,18 @@ var stmts = map[int]string{} // Statement code to statement SQL text. var PreparedStmts = map[int]*sql.Stmt{} // Stmt prepares the in-memory prepared statement for the transaction. -func Stmt(tx *sql.Tx, code int) (*sql.Stmt, error) { +func Stmt(db dbtx, code int) (*sql.Stmt, error) { stmt, ok := PreparedStmts[code] if !ok { return nil, fmt.Errorf("No prepared statement registered with code %d", code) } - return tx.Stmt(stmt), nil + tx, ok := db.(*sql.Tx) + if ok { + return tx.Stmt(stmt), nil + } + + return stmt, nil } // StmtString returns the in-memory query string with the given code. @@ -140,8 +152,8 @@ func selectObjects(ctx context.Context, stmt *sql.Stmt, rowFunc dest, args ...an // scan runs a query with inArgs and provides the rowFunc with the scan function for each row. // It handles closing the rows and errors from the result set. -func scan(ctx context.Context, tx *sql.Tx, sqlStmt string, rowFunc dest, inArgs ...any) error { - rows, err := tx.QueryContext(ctx, sqlStmt, inArgs...) +func scan(ctx context.Context, db dbtx, sqlStmt string, rowFunc dest, inArgs ...any) error { + rows, err := db.QueryContext(ctx, sqlStmt, inArgs...) if err != nil { return err } diff --git a/internal/server/db/cluster/networks_integrations.interface.mapper.go b/internal/server/db/cluster/networks_integrations.interface.mapper.go index bdd92ec4e6f..ad656ea79aa 100644 --- a/internal/server/db/cluster/networks_integrations.interface.mapper.go +++ b/internal/server/db/cluster/networks_integrations.interface.mapper.go @@ -2,54 +2,51 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // NetworkIntegrationGenerated is an interface of generated methods for NetworkIntegration. type NetworkIntegrationGenerated interface { // GetNetworkIntegrationConfig returns all available NetworkIntegration Config // generator: network_integration GetMany - GetNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int, filters ...ConfigFilter) (map[string]string, error) + GetNetworkIntegrationConfig(ctx context.Context, db dbtx, networkIntegrationID int, filters ...ConfigFilter) (map[string]string, error) // GetNetworkIntegrations returns all available network_integrations. // generator: network_integration GetMany - GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkIntegrationFilter) ([]NetworkIntegration, error) + GetNetworkIntegrations(ctx context.Context, db dbtx, filters ...NetworkIntegrationFilter) ([]NetworkIntegration, error) // GetNetworkIntegration returns the network_integration with the given key. // generator: network_integration GetOne - GetNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (*NetworkIntegration, error) + GetNetworkIntegration(ctx context.Context, db dbtx, name string) (*NetworkIntegration, error) // NetworkIntegrationExists checks if a network_integration with the given key exists. // generator: network_integration Exists - NetworkIntegrationExists(ctx context.Context, tx *sql.Tx, name string) (bool, error) + NetworkIntegrationExists(ctx context.Context, db dbtx, name string) (bool, error) // CreateNetworkIntegrationConfig adds new network_integration Config to the database. // generator: network_integration Create - CreateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) error + CreateNetworkIntegrationConfig(ctx context.Context, db dbtx, networkIntegrationID int64, config map[string]string) error // CreateNetworkIntegration adds a new network_integration to the database. // generator: network_integration Create - CreateNetworkIntegration(ctx context.Context, tx *sql.Tx, object NetworkIntegration) (int64, error) + CreateNetworkIntegration(ctx context.Context, db dbtx, object NetworkIntegration) (int64, error) // GetNetworkIntegrationID return the ID of the network_integration with the given key. // generator: network_integration ID - GetNetworkIntegrationID(ctx context.Context, tx *sql.Tx, name string) (int64, error) + GetNetworkIntegrationID(ctx context.Context, db dbtx, name string) (int64, error) // RenameNetworkIntegration renames the network_integration matching the given key parameters. // generator: network_integration Rename - RenameNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, to string) error + RenameNetworkIntegration(ctx context.Context, db dbtx, name string, to string) error // DeleteNetworkIntegration deletes the network_integration matching the given key parameters. // generator: network_integration DeleteOne-by-Name - DeleteNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) error + DeleteNetworkIntegration(ctx context.Context, db dbtx, name string) error // UpdateNetworkIntegrationConfig updates the network_integration Config matching the given key parameters. // generator: network_integration Update - UpdateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) error + UpdateNetworkIntegrationConfig(ctx context.Context, db dbtx, networkIntegrationID int64, config map[string]string) error // UpdateNetworkIntegration updates the network_integration matching the given key parameters. // generator: network_integration Update - UpdateNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, object NetworkIntegration) error + UpdateNetworkIntegration(ctx context.Context, db dbtx, name string, object NetworkIntegration) error } diff --git a/internal/server/db/cluster/networks_integrations.mapper.go b/internal/server/db/cluster/networks_integrations.mapper.go index 8bae46201b1..9db59cb6d11 100644 --- a/internal/server/db/cluster/networks_integrations.mapper.go +++ b/internal/server/db/cluster/networks_integrations.mapper.go @@ -87,7 +87,7 @@ func getNetworkIntegrations(ctx context.Context, stmt *sql.Stmt, args ...any) ([ } // getNetworkIntegrationsRaw can be used to run handwritten query strings to return a slice of objects. -func getNetworkIntegrationsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]NetworkIntegration, error) { +func getNetworkIntegrationsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]NetworkIntegration, error) { objects := make([]NetworkIntegration, 0) dest := func(scan func(dest ...any) error) error { @@ -102,7 +102,7 @@ func getNetworkIntegrationsRaw(ctx context.Context, tx *sql.Tx, sql string, args return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"networks_integrations\" table: %w", err) } @@ -112,7 +112,7 @@ func getNetworkIntegrationsRaw(ctx context.Context, tx *sql.Tx, sql string, args // GetNetworkIntegrations returns all available network_integrations. // generator: network_integration GetMany -func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkIntegrationFilter) (_ []NetworkIntegration, _err error) { +func GetNetworkIntegrations(ctx context.Context, db dbtx, filters ...NetworkIntegrationFilter) (_ []NetworkIntegration, _err error) { defer func() { _err = mapErr(_err, "Network_integration") }() @@ -128,7 +128,7 @@ func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkI queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, networkIntegrationObjects) + sqlStmt, err = Stmt(db, networkIntegrationObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"networkIntegrationObjects\" prepared statement: %w", err) } @@ -138,7 +138,7 @@ func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkI if filter.Name != nil && filter.ID == nil { args = append(args, []any{filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, networkIntegrationObjectsByName) + sqlStmt, err = Stmt(db, networkIntegrationObjectsByName) if err != nil { return nil, fmt.Errorf("Failed to get \"networkIntegrationObjectsByName\" prepared statement: %w", err) } @@ -162,7 +162,7 @@ func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkI } else if filter.ID != nil && filter.Name == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, networkIntegrationObjectsByID) + sqlStmt, err = Stmt(db, networkIntegrationObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"networkIntegrationObjectsByID\" prepared statement: %w", err) } @@ -195,7 +195,7 @@ func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkI objects, err = getNetworkIntegrations(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getNetworkIntegrationsRaw(ctx, tx, queryStr, args...) + objects, err = getNetworkIntegrationsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -207,12 +207,12 @@ func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkI // GetNetworkIntegrationConfig returns all available NetworkIntegration Config // generator: network_integration GetMany -func GetNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int, filters ...ConfigFilter) (_ map[string]string, _err error) { +func GetNetworkIntegrationConfig(ctx context.Context, db dbtx, networkIntegrationID int, filters ...ConfigFilter) (_ map[string]string, _err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - networkIntegrationConfig, err := GetConfig(ctx, tx, "network_integration", filters...) + networkIntegrationConfig, err := GetConfig(ctx, db, "network_integration", filters...) if err != nil { return nil, err } @@ -227,7 +227,7 @@ func GetNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegra // GetNetworkIntegration returns the network_integration with the given key. // generator: network_integration GetOne -func GetNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (_ *NetworkIntegration, _err error) { +func GetNetworkIntegration(ctx context.Context, db dbtx, name string) (_ *NetworkIntegration, _err error) { defer func() { _err = mapErr(_err, "Network_integration") }() @@ -235,7 +235,7 @@ func GetNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (_ *Net filter := NetworkIntegrationFilter{} filter.Name = &name - objects, err := GetNetworkIntegrations(ctx, tx, filter) + objects, err := GetNetworkIntegrations(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"networks_integrations\" table: %w", err) } @@ -252,12 +252,12 @@ func GetNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (_ *Net // NetworkIntegrationExists checks if a network_integration with the given key exists. // generator: network_integration Exists -func NetworkIntegrationExists(ctx context.Context, tx *sql.Tx, name string) (_ bool, _err error) { +func NetworkIntegrationExists(ctx context.Context, db dbtx, name string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - stmt, err := Stmt(tx, networkIntegrationID) + stmt, err := Stmt(db, networkIntegrationID) if err != nil { return false, fmt.Errorf("Failed to get \"networkIntegrationID\" prepared statement: %w", err) } @@ -278,13 +278,13 @@ func NetworkIntegrationExists(ctx context.Context, tx *sql.Tx, name string) (_ b // CreateNetworkIntegration adds a new network_integration to the database. // generator: network_integration Create -func CreateNetworkIntegration(ctx context.Context, tx *sql.Tx, object NetworkIntegration) (_ int64, _err error) { +func CreateNetworkIntegration(ctx context.Context, db dbtx, object NetworkIntegration) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Network_integration") }() // Check if a network_integration with the same key exists. - exists, err := NetworkIntegrationExists(ctx, tx, object.Name) + exists, err := NetworkIntegrationExists(ctx, db, object.Name) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -301,7 +301,7 @@ func CreateNetworkIntegration(ctx context.Context, tx *sql.Tx, object NetworkInt args[2] = object.Type // Prepared statement to use. - stmt, err := Stmt(tx, networkIntegrationCreate) + stmt, err := Stmt(db, networkIntegrationCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"networkIntegrationCreate\" prepared statement: %w", err) } @@ -322,7 +322,7 @@ func CreateNetworkIntegration(ctx context.Context, tx *sql.Tx, object NetworkInt // CreateNetworkIntegrationConfig adds new network_integration Config to the database. // generator: network_integration Create -func CreateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) (_err error) { +func CreateNetworkIntegrationConfig(ctx context.Context, db dbtx, networkIntegrationID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Network_integration") }() @@ -335,7 +335,7 @@ func CreateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkInte Value: value, } - err := CreateConfig(ctx, tx, "network_integration", insert) + err := CreateConfig(ctx, db, "network_integration", insert) if err != nil { return fmt.Errorf("Insert Config failed for NetworkIntegration: %w", err) } @@ -347,12 +347,12 @@ func CreateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkInte // GetNetworkIntegrationID return the ID of the network_integration with the given key. // generator: network_integration ID -func GetNetworkIntegrationID(ctx context.Context, tx *sql.Tx, name string) (_ int64, _err error) { +func GetNetworkIntegrationID(ctx context.Context, db dbtx, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - stmt, err := Stmt(tx, networkIntegrationID) + stmt, err := Stmt(db, networkIntegrationID) if err != nil { return -1, fmt.Errorf("Failed to get \"networkIntegrationID\" prepared statement: %w", err) } @@ -373,12 +373,12 @@ func GetNetworkIntegrationID(ctx context.Context, tx *sql.Tx, name string) (_ in // RenameNetworkIntegration renames the network_integration matching the given key parameters. // generator: network_integration Rename -func RenameNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, to string) (_err error) { +func RenameNetworkIntegration(ctx context.Context, db dbtx, name string, to string) (_err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - stmt, err := Stmt(tx, networkIntegrationRename) + stmt, err := Stmt(db, networkIntegrationRename) if err != nil { return fmt.Errorf("Failed to get \"networkIntegrationRename\" prepared statement: %w", err) } @@ -402,12 +402,12 @@ func RenameNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, to s // DeleteNetworkIntegration deletes the network_integration matching the given key parameters. // generator: network_integration DeleteOne-by-Name -func DeleteNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (_err error) { +func DeleteNetworkIntegration(ctx context.Context, db dbtx, name string) (_err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - stmt, err := Stmt(tx, networkIntegrationDeleteByName) + stmt, err := Stmt(db, networkIntegrationDeleteByName) if err != nil { return fmt.Errorf("Failed to get \"networkIntegrationDeleteByName\" prepared statement: %w", err) } @@ -433,17 +433,17 @@ func DeleteNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (_er // UpdateNetworkIntegration updates the network_integration matching the given key parameters. // generator: network_integration Update -func UpdateNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, object NetworkIntegration) (_err error) { +func UpdateNetworkIntegration(ctx context.Context, db dbtx, name string, object NetworkIntegration) (_err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - id, err := GetNetworkIntegrationID(ctx, tx, name) + id, err := GetNetworkIntegrationID(ctx, db, name) if err != nil { return err } - stmt, err := Stmt(tx, networkIntegrationUpdate) + stmt, err := Stmt(db, networkIntegrationUpdate) if err != nil { return fmt.Errorf("Failed to get \"networkIntegrationUpdate\" prepared statement: %w", err) } @@ -467,12 +467,12 @@ func UpdateNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, obje // UpdateNetworkIntegrationConfig updates the network_integration Config matching the given key parameters. // generator: network_integration Update -func UpdateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) (_err error) { +func UpdateNetworkIntegrationConfig(ctx context.Context, db dbtx, networkIntegrationID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Network_integration") }() - err := UpdateConfig(ctx, tx, "network_integration", int(networkIntegrationID), config) + err := UpdateConfig(ctx, db, "network_integration", int(networkIntegrationID), config) if err != nil { return fmt.Errorf("Replace Config for NetworkIntegration failed: %w", err) } diff --git a/internal/server/db/cluster/nodes.interface.mapper.go b/internal/server/db/cluster/nodes.interface.mapper.go index 04073506588..d8ee27b2cb8 100644 --- a/internal/server/db/cluster/nodes.interface.mapper.go +++ b/internal/server/db/cluster/nodes.interface.mapper.go @@ -2,14 +2,11 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // NodeGenerated is an interface of generated methods for Node. type NodeGenerated interface { // GetNodeID return the ID of the node with the given key. // generator: node ID - GetNodeID(ctx context.Context, tx *sql.Tx, name string) (int64, error) + GetNodeID(ctx context.Context, db dbtx, name string) (int64, error) } diff --git a/internal/server/db/cluster/nodes.mapper.go b/internal/server/db/cluster/nodes.mapper.go index 5047e7401d8..f2b268d8006 100644 --- a/internal/server/db/cluster/nodes.mapper.go +++ b/internal/server/db/cluster/nodes.mapper.go @@ -18,12 +18,12 @@ SELECT nodes.id FROM nodes // GetNodeID return the ID of the node with the given key. // generator: node ID -func GetNodeID(ctx context.Context, tx *sql.Tx, name string) (_ int64, _err error) { +func GetNodeID(ctx context.Context, db dbtx, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Node") }() - stmt, err := Stmt(tx, nodeID) + stmt, err := Stmt(db, nodeID) if err != nil { return -1, fmt.Errorf("Failed to get \"nodeID\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/nodes_cluster_groups.mapper.go b/internal/server/db/cluster/nodes_cluster_groups.mapper.go index 6ae0d42bbe2..89f6130391f 100644 --- a/internal/server/db/cluster/nodes_cluster_groups.mapper.go +++ b/internal/server/db/cluster/nodes_cluster_groups.mapper.go @@ -72,7 +72,7 @@ func getNodeClusterGroups(ctx context.Context, stmt *sql.Stmt, args ...any) ([]N } // getNodeClusterGroupsRaw can be used to run handwritten query strings to return a slice of objects. -func getNodeClusterGroupsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]NodeClusterGroup, error) { +func getNodeClusterGroupsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]NodeClusterGroup, error) { objects := make([]NodeClusterGroup, 0) dest := func(scan func(dest ...any) error) error { @@ -87,7 +87,7 @@ func getNodeClusterGroupsRaw(ctx context.Context, tx *sql.Tx, sql string, args . return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"nodes_clusters_groups\" table: %w", err) } @@ -97,7 +97,7 @@ func getNodeClusterGroupsRaw(ctx context.Context, tx *sql.Tx, sql string, args . // GetNodeClusterGroups returns all available node_cluster_groups. // generator: node_cluster_group GetMany -func GetNodeClusterGroups(ctx context.Context, tx *sql.Tx, filters ...NodeClusterGroupFilter) (_ []NodeClusterGroup, _err error) { +func GetNodeClusterGroups(ctx context.Context, db dbtx, filters ...NodeClusterGroupFilter) (_ []NodeClusterGroup, _err error) { defer func() { _err = mapErr(_err, "Node_cluster_group") }() @@ -113,7 +113,7 @@ func GetNodeClusterGroups(ctx context.Context, tx *sql.Tx, filters ...NodeCluste queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, nodeClusterGroupObjects) + sqlStmt, err = Stmt(db, nodeClusterGroupObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"nodeClusterGroupObjects\" prepared statement: %w", err) } @@ -123,7 +123,7 @@ func GetNodeClusterGroups(ctx context.Context, tx *sql.Tx, filters ...NodeCluste if filter.GroupID != nil { args = append(args, []any{filter.GroupID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, nodeClusterGroupObjectsByGroupID) + sqlStmt, err = Stmt(db, nodeClusterGroupObjectsByGroupID) if err != nil { return nil, fmt.Errorf("Failed to get \"nodeClusterGroupObjectsByGroupID\" prepared statement: %w", err) } @@ -156,7 +156,7 @@ func GetNodeClusterGroups(ctx context.Context, tx *sql.Tx, filters ...NodeCluste objects, err = getNodeClusterGroups(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getNodeClusterGroupsRaw(ctx, tx, queryStr, args...) + objects, err = getNodeClusterGroupsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -168,13 +168,13 @@ func GetNodeClusterGroups(ctx context.Context, tx *sql.Tx, filters ...NodeCluste // CreateNodeClusterGroup adds a new node_cluster_group to the database. // generator: node_cluster_group Create -func CreateNodeClusterGroup(ctx context.Context, tx *sql.Tx, object NodeClusterGroup) (_ int64, _err error) { +func CreateNodeClusterGroup(ctx context.Context, db dbtx, object NodeClusterGroup) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Node_cluster_group") }() // Check if a node_cluster_group with the same key exists. - exists, err := NodeClusterGroupExists(ctx, tx, object.GroupID) + exists, err := NodeClusterGroupExists(ctx, db, object.GroupID) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -190,7 +190,7 @@ func CreateNodeClusterGroup(ctx context.Context, tx *sql.Tx, object NodeClusterG args[1] = object.Node // Prepared statement to use. - stmt, err := Stmt(tx, nodeClusterGroupCreate) + stmt, err := Stmt(db, nodeClusterGroupCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"nodeClusterGroupCreate\" prepared statement: %w", err) } @@ -211,12 +211,12 @@ func CreateNodeClusterGroup(ctx context.Context, tx *sql.Tx, object NodeClusterG // NodeClusterGroupExists checks if a node_cluster_group with the given key exists. // generator: node_cluster_group Exists -func NodeClusterGroupExists(ctx context.Context, tx *sql.Tx, groupID int) (_ bool, _err error) { +func NodeClusterGroupExists(ctx context.Context, db dbtx, groupID int) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Node_cluster_group") }() - stmt, err := Stmt(tx, nodeClusterGroupID) + stmt, err := Stmt(db, nodeClusterGroupID) if err != nil { return false, fmt.Errorf("Failed to get \"nodeClusterGroupID\" prepared statement: %w", err) } @@ -237,12 +237,12 @@ func NodeClusterGroupExists(ctx context.Context, tx *sql.Tx, groupID int) (_ boo // GetNodeClusterGroupID return the ID of the node_cluster_group with the given key. // generator: node_cluster_group ID -func GetNodeClusterGroupID(ctx context.Context, tx *sql.Tx, groupID int) (_ int64, _err error) { +func GetNodeClusterGroupID(ctx context.Context, db dbtx, groupID int) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Node_cluster_group") }() - stmt, err := Stmt(tx, nodeClusterGroupID) + stmt, err := Stmt(db, nodeClusterGroupID) if err != nil { return -1, fmt.Errorf("Failed to get \"nodeClusterGroupID\" prepared statement: %w", err) } @@ -263,12 +263,12 @@ func GetNodeClusterGroupID(ctx context.Context, tx *sql.Tx, groupID int) (_ int6 // DeleteNodeClusterGroup deletes the node_cluster_group matching the given key parameters. // generator: node_cluster_group DeleteOne-by-GroupID -func DeleteNodeClusterGroup(ctx context.Context, tx *sql.Tx, groupID int) (_err error) { +func DeleteNodeClusterGroup(ctx context.Context, db dbtx, groupID int) (_err error) { defer func() { _err = mapErr(_err, "Node_cluster_group") }() - stmt, err := Stmt(tx, nodeClusterGroupDeleteByGroupID) + stmt, err := Stmt(db, nodeClusterGroupDeleteByGroupID) if err != nil { return fmt.Errorf("Failed to get \"nodeClusterGroupDeleteByGroupID\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/operations.interface.mapper.go b/internal/server/db/cluster/operations.interface.mapper.go index 797859d570c..9a2598cf8e6 100644 --- a/internal/server/db/cluster/operations.interface.mapper.go +++ b/internal/server/db/cluster/operations.interface.mapper.go @@ -2,26 +2,23 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // OperationGenerated is an interface of generated methods for Operation. type OperationGenerated interface { // GetOperations returns all available operations. // generator: operation GetMany - GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) ([]Operation, error) + GetOperations(ctx context.Context, db dbtx, filters ...OperationFilter) ([]Operation, error) // CreateOrReplaceOperation adds a new operation to the database. // generator: operation CreateOrReplace - CreateOrReplaceOperation(ctx context.Context, tx *sql.Tx, object Operation) (int64, error) + CreateOrReplaceOperation(ctx context.Context, db dbtx, object Operation) (int64, error) // DeleteOperation deletes the operation matching the given key parameters. // generator: operation DeleteOne-by-UUID - DeleteOperation(ctx context.Context, tx *sql.Tx, uuid string) error + DeleteOperation(ctx context.Context, db dbtx, uuid string) error // DeleteOperations deletes the operation matching the given key parameters. // generator: operation DeleteMany-by-NodeID - DeleteOperations(ctx context.Context, tx *sql.Tx, nodeID int64) error + DeleteOperations(ctx context.Context, db dbtx, nodeID int64) error } diff --git a/internal/server/db/cluster/operations.mapper.go b/internal/server/db/cluster/operations.mapper.go index a58c9e08e79..584bf7629b3 100644 --- a/internal/server/db/cluster/operations.mapper.go +++ b/internal/server/db/cluster/operations.mapper.go @@ -86,7 +86,7 @@ func getOperations(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Operatio } // getOperationsRaw can be used to run handwritten query strings to return a slice of objects. -func getOperationsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Operation, error) { +func getOperationsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Operation, error) { objects := make([]Operation, 0) dest := func(scan func(dest ...any) error) error { @@ -101,7 +101,7 @@ func getOperationsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"operations\" table: %w", err) } @@ -111,7 +111,7 @@ func getOperationsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) // GetOperations returns all available operations. // generator: operation GetMany -func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) (_ []Operation, _err error) { +func GetOperations(ctx context.Context, db dbtx, filters ...OperationFilter) (_ []Operation, _err error) { defer func() { _err = mapErr(_err, "Operation") }() @@ -127,7 +127,7 @@ func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, operationObjects) + sqlStmt, err = Stmt(db, operationObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"operationObjects\" prepared statement: %w", err) } @@ -137,7 +137,7 @@ func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) if filter.UUID != nil && filter.ID == nil && filter.NodeID == nil { args = append(args, []any{filter.UUID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, operationObjectsByUUID) + sqlStmt, err = Stmt(db, operationObjectsByUUID) if err != nil { return nil, fmt.Errorf("Failed to get \"operationObjectsByUUID\" prepared statement: %w", err) } @@ -161,7 +161,7 @@ func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) } else if filter.NodeID != nil && filter.ID == nil && filter.UUID == nil { args = append(args, []any{filter.NodeID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, operationObjectsByNodeID) + sqlStmt, err = Stmt(db, operationObjectsByNodeID) if err != nil { return nil, fmt.Errorf("Failed to get \"operationObjectsByNodeID\" prepared statement: %w", err) } @@ -185,7 +185,7 @@ func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) } else if filter.ID != nil && filter.NodeID == nil && filter.UUID == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, operationObjectsByID) + sqlStmt, err = Stmt(db, operationObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"operationObjectsByID\" prepared statement: %w", err) } @@ -218,7 +218,7 @@ func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) objects, err = getOperations(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getOperationsRaw(ctx, tx, queryStr, args...) + objects, err = getOperationsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -230,7 +230,7 @@ func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) // CreateOrReplaceOperation adds a new operation to the database. // generator: operation CreateOrReplace -func CreateOrReplaceOperation(ctx context.Context, tx *sql.Tx, object Operation) (_ int64, _err error) { +func CreateOrReplaceOperation(ctx context.Context, db dbtx, object Operation) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Operation") }() @@ -244,7 +244,7 @@ func CreateOrReplaceOperation(ctx context.Context, tx *sql.Tx, object Operation) args[3] = object.Type // Prepared statement to use. - stmt, err := Stmt(tx, operationCreateOrReplace) + stmt, err := Stmt(db, operationCreateOrReplace) if err != nil { return -1, fmt.Errorf("Failed to get \"operationCreateOrReplace\" prepared statement: %w", err) } @@ -265,12 +265,12 @@ func CreateOrReplaceOperation(ctx context.Context, tx *sql.Tx, object Operation) // DeleteOperation deletes the operation matching the given key parameters. // generator: operation DeleteOne-by-UUID -func DeleteOperation(ctx context.Context, tx *sql.Tx, uuid string) (_err error) { +func DeleteOperation(ctx context.Context, db dbtx, uuid string) (_err error) { defer func() { _err = mapErr(_err, "Operation") }() - stmt, err := Stmt(tx, operationDeleteByUUID) + stmt, err := Stmt(db, operationDeleteByUUID) if err != nil { return fmt.Errorf("Failed to get \"operationDeleteByUUID\" prepared statement: %w", err) } @@ -296,12 +296,12 @@ func DeleteOperation(ctx context.Context, tx *sql.Tx, uuid string) (_err error) // DeleteOperations deletes the operation matching the given key parameters. // generator: operation DeleteMany-by-NodeID -func DeleteOperations(ctx context.Context, tx *sql.Tx, nodeID int64) (_err error) { +func DeleteOperations(ctx context.Context, db dbtx, nodeID int64) (_err error) { defer func() { _err = mapErr(_err, "Operation") }() - stmt, err := Stmt(tx, operationDeleteByNodeID) + stmt, err := Stmt(db, operationDeleteByNodeID) if err != nil { return fmt.Errorf("Failed to get \"operationDeleteByNodeID\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/profiles.interface.mapper.go b/internal/server/db/cluster/profiles.interface.mapper.go index 6c60f156638..16178ab2e79 100644 --- a/internal/server/db/cluster/profiles.interface.mapper.go +++ b/internal/server/db/cluster/profiles.interface.mapper.go @@ -2,66 +2,63 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // ProfileGenerated is an interface of generated methods for Profile. type ProfileGenerated interface { // GetProfileID return the ID of the profile with the given key. // generator: profile ID - GetProfileID(ctx context.Context, tx *sql.Tx, project string, name string) (int64, error) + GetProfileID(ctx context.Context, db dbtx, project string, name string) (int64, error) // ProfileExists checks if a profile with the given key exists. // generator: profile Exists - ProfileExists(ctx context.Context, tx *sql.Tx, project string, name string) (bool, error) + ProfileExists(ctx context.Context, db dbtx, project string, name string) (bool, error) // GetProfileConfig returns all available Profile Config // generator: profile GetMany - GetProfileConfig(ctx context.Context, tx *sql.Tx, profileID int, filters ...ConfigFilter) (map[string]string, error) + GetProfileConfig(ctx context.Context, db dbtx, profileID int, filters ...ConfigFilter) (map[string]string, error) // GetProfileDevices returns all available Profile Devices // generator: profile GetMany - GetProfileDevices(ctx context.Context, tx *sql.Tx, profileID int, filters ...DeviceFilter) (map[string]Device, error) + GetProfileDevices(ctx context.Context, db dbtx, profileID int, filters ...DeviceFilter) (map[string]Device, error) // GetProfiles returns all available profiles. // generator: profile GetMany - GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) ([]Profile, error) + GetProfiles(ctx context.Context, db dbtx, filters ...ProfileFilter) ([]Profile, error) // GetProfile returns the profile with the given key. // generator: profile GetOne - GetProfile(ctx context.Context, tx *sql.Tx, project string, name string) (*Profile, error) + GetProfile(ctx context.Context, db dbtx, project string, name string) (*Profile, error) // CreateProfileConfig adds new profile Config to the database. // generator: profile Create - CreateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) error + CreateProfileConfig(ctx context.Context, db dbtx, profileID int64, config map[string]string) error // CreateProfileDevices adds new profile Devices to the database. // generator: profile Create - CreateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) error + CreateProfileDevices(ctx context.Context, db dbtx, profileID int64, devices map[string]Device) error // CreateProfile adds a new profile to the database. // generator: profile Create - CreateProfile(ctx context.Context, tx *sql.Tx, object Profile) (int64, error) + CreateProfile(ctx context.Context, db dbtx, object Profile) (int64, error) // RenameProfile renames the profile matching the given key parameters. // generator: profile Rename - RenameProfile(ctx context.Context, tx *sql.Tx, project string, name string, to string) error + RenameProfile(ctx context.Context, db dbtx, project string, name string, to string) error // UpdateProfileConfig updates the profile Config matching the given key parameters. // generator: profile Update - UpdateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) error + UpdateProfileConfig(ctx context.Context, db dbtx, profileID int64, config map[string]string) error // UpdateProfileDevices updates the profile Device matching the given key parameters. // generator: profile Update - UpdateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) error + UpdateProfileDevices(ctx context.Context, db dbtx, profileID int64, devices map[string]Device) error // UpdateProfile updates the profile matching the given key parameters. // generator: profile Update - UpdateProfile(ctx context.Context, tx *sql.Tx, project string, name string, object Profile) error + UpdateProfile(ctx context.Context, db dbtx, project string, name string, object Profile) error // DeleteProfile deletes the profile matching the given key parameters. // generator: profile DeleteOne-by-Project-and-Name - DeleteProfile(ctx context.Context, tx *sql.Tx, project string, name string) error + DeleteProfile(ctx context.Context, db dbtx, project string, name string) error } diff --git a/internal/server/db/cluster/profiles.mapper.go b/internal/server/db/cluster/profiles.mapper.go index 212bc1e3790..cbf35948666 100644 --- a/internal/server/db/cluster/profiles.mapper.go +++ b/internal/server/db/cluster/profiles.mapper.go @@ -78,12 +78,12 @@ DELETE FROM profiles WHERE project_id = (SELECT projects.id FROM projects WHERE // GetProfileID return the ID of the profile with the given key. // generator: profile ID -func GetProfileID(ctx context.Context, tx *sql.Tx, project string, name string) (_ int64, _err error) { +func GetProfileID(ctx context.Context, db dbtx, project string, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Profile") }() - stmt, err := Stmt(tx, profileID) + stmt, err := Stmt(db, profileID) if err != nil { return -1, fmt.Errorf("Failed to get \"profileID\" prepared statement: %w", err) } @@ -104,12 +104,12 @@ func GetProfileID(ctx context.Context, tx *sql.Tx, project string, name string) // ProfileExists checks if a profile with the given key exists. // generator: profile Exists -func ProfileExists(ctx context.Context, tx *sql.Tx, project string, name string) (_ bool, _err error) { +func ProfileExists(ctx context.Context, db dbtx, project string, name string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Profile") }() - stmt, err := Stmt(tx, profileID) + stmt, err := Stmt(db, profileID) if err != nil { return false, fmt.Errorf("Failed to get \"profileID\" prepared statement: %w", err) } @@ -159,7 +159,7 @@ func getProfiles(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Profile, e } // getProfilesRaw can be used to run handwritten query strings to return a slice of objects. -func getProfilesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Profile, error) { +func getProfilesRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Profile, error) { objects := make([]Profile, 0) dest := func(scan func(dest ...any) error) error { @@ -174,7 +174,7 @@ func getProfilesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([ return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"profiles\" table: %w", err) } @@ -184,7 +184,7 @@ func getProfilesRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([ // GetProfiles returns all available profiles. // generator: profile GetMany -func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ []Profile, _err error) { +func GetProfiles(ctx context.Context, db dbtx, filters ...ProfileFilter) (_ []Profile, _err error) { defer func() { _err = mapErr(_err, "Profile") }() @@ -200,7 +200,7 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, profileObjects) + sqlStmt, err = Stmt(db, profileObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"profileObjects\" prepared statement: %w", err) } @@ -210,7 +210,7 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ if filter.Project != nil && filter.Name != nil && filter.ID == nil { args = append(args, []any{filter.Project, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, profileObjectsByProjectAndName) + sqlStmt, err = Stmt(db, profileObjectsByProjectAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"profileObjectsByProjectAndName\" prepared statement: %w", err) } @@ -234,7 +234,7 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ } else if filter.Project != nil && filter.ID == nil && filter.Name == nil { args = append(args, []any{filter.Project}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, profileObjectsByProject) + sqlStmt, err = Stmt(db, profileObjectsByProject) if err != nil { return nil, fmt.Errorf("Failed to get \"profileObjectsByProject\" prepared statement: %w", err) } @@ -258,7 +258,7 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ } else if filter.Name != nil && filter.ID == nil && filter.Project == nil { args = append(args, []any{filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, profileObjectsByName) + sqlStmt, err = Stmt(db, profileObjectsByName) if err != nil { return nil, fmt.Errorf("Failed to get \"profileObjectsByName\" prepared statement: %w", err) } @@ -282,7 +282,7 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ } else if filter.ID != nil && filter.Project == nil && filter.Name == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, profileObjectsByID) + sqlStmt, err = Stmt(db, profileObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"profileObjectsByID\" prepared statement: %w", err) } @@ -315,7 +315,7 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ objects, err = getProfiles(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getProfilesRaw(ctx, tx, queryStr, args...) + objects, err = getProfilesRaw(ctx, db, queryStr, args...) } if err != nil { @@ -327,12 +327,12 @@ func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) (_ [ // GetProfileDevices returns all available Profile Devices // generator: profile GetMany -func GetProfileDevices(ctx context.Context, tx *sql.Tx, profileID int, filters ...DeviceFilter) (_ map[string]Device, _err error) { +func GetProfileDevices(ctx context.Context, db dbtx, profileID int, filters ...DeviceFilter) (_ map[string]Device, _err error) { defer func() { _err = mapErr(_err, "Profile") }() - profileDevices, err := GetDevices(ctx, tx, "profile", filters...) + profileDevices, err := GetDevices(ctx, db, "profile", filters...) if err != nil { return nil, err } @@ -352,12 +352,12 @@ func GetProfileDevices(ctx context.Context, tx *sql.Tx, profileID int, filters . // GetProfileConfig returns all available Profile Config // generator: profile GetMany -func GetProfileConfig(ctx context.Context, tx *sql.Tx, profileID int, filters ...ConfigFilter) (_ map[string]string, _err error) { +func GetProfileConfig(ctx context.Context, db dbtx, profileID int, filters ...ConfigFilter) (_ map[string]string, _err error) { defer func() { _err = mapErr(_err, "Profile") }() - profileConfig, err := GetConfig(ctx, tx, "profile", filters...) + profileConfig, err := GetConfig(ctx, db, "profile", filters...) if err != nil { return nil, err } @@ -372,7 +372,7 @@ func GetProfileConfig(ctx context.Context, tx *sql.Tx, profileID int, filters .. // GetProfile returns the profile with the given key. // generator: profile GetOne -func GetProfile(ctx context.Context, tx *sql.Tx, project string, name string) (_ *Profile, _err error) { +func GetProfile(ctx context.Context, db dbtx, project string, name string) (_ *Profile, _err error) { defer func() { _err = mapErr(_err, "Profile") }() @@ -381,7 +381,7 @@ func GetProfile(ctx context.Context, tx *sql.Tx, project string, name string) (_ filter.Project = &project filter.Name = &name - objects, err := GetProfiles(ctx, tx, filter) + objects, err := GetProfiles(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"profiles\" table: %w", err) } @@ -398,13 +398,13 @@ func GetProfile(ctx context.Context, tx *sql.Tx, project string, name string) (_ // CreateProfile adds a new profile to the database. // generator: profile Create -func CreateProfile(ctx context.Context, tx *sql.Tx, object Profile) (_ int64, _err error) { +func CreateProfile(ctx context.Context, db dbtx, object Profile) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Profile") }() // Check if a profile with the same key exists. - exists, err := ProfileExists(ctx, tx, object.Project, object.Name) + exists, err := ProfileExists(ctx, db, object.Project, object.Name) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -421,7 +421,7 @@ func CreateProfile(ctx context.Context, tx *sql.Tx, object Profile) (_ int64, _e args[2] = object.Description // Prepared statement to use. - stmt, err := Stmt(tx, profileCreate) + stmt, err := Stmt(db, profileCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"profileCreate\" prepared statement: %w", err) } @@ -442,7 +442,7 @@ func CreateProfile(ctx context.Context, tx *sql.Tx, object Profile) (_ int64, _e // CreateProfileDevices adds new profile Devices to the database. // generator: profile Create -func CreateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) (_err error) { +func CreateProfileDevices(ctx context.Context, db dbtx, profileID int64, devices map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() @@ -452,7 +452,7 @@ func CreateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devi devices[key] = device } - err := CreateDevices(ctx, tx, "profile", devices) + err := CreateDevices(ctx, db, "profile", devices) if err != nil { return fmt.Errorf("Insert Device failed for Profile: %w", err) } @@ -462,7 +462,7 @@ func CreateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devi // CreateProfileConfig adds new profile Config to the database. // generator: profile Create -func CreateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) (_err error) { +func CreateProfileConfig(ctx context.Context, db dbtx, profileID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() @@ -475,7 +475,7 @@ func CreateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, confi Value: value, } - err := CreateConfig(ctx, tx, "profile", insert) + err := CreateConfig(ctx, db, "profile", insert) if err != nil { return fmt.Errorf("Insert Config failed for Profile: %w", err) } @@ -487,12 +487,12 @@ func CreateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, confi // RenameProfile renames the profile matching the given key parameters. // generator: profile Rename -func RenameProfile(ctx context.Context, tx *sql.Tx, project string, name string, to string) (_err error) { +func RenameProfile(ctx context.Context, db dbtx, project string, name string, to string) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() - stmt, err := Stmt(tx, profileRename) + stmt, err := Stmt(db, profileRename) if err != nil { return fmt.Errorf("Failed to get \"profileRename\" prepared statement: %w", err) } @@ -516,17 +516,17 @@ func RenameProfile(ctx context.Context, tx *sql.Tx, project string, name string, // UpdateProfile updates the profile matching the given key parameters. // generator: profile Update -func UpdateProfile(ctx context.Context, tx *sql.Tx, project string, name string, object Profile) (_err error) { +func UpdateProfile(ctx context.Context, db dbtx, project string, name string, object Profile) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() - id, err := GetProfileID(ctx, tx, project, name) + id, err := GetProfileID(ctx, db, project, name) if err != nil { return err } - stmt, err := Stmt(tx, profileUpdate) + stmt, err := Stmt(db, profileUpdate) if err != nil { return fmt.Errorf("Failed to get \"profileUpdate\" prepared statement: %w", err) } @@ -550,12 +550,12 @@ func UpdateProfile(ctx context.Context, tx *sql.Tx, project string, name string, // UpdateProfileDevices updates the profile Device matching the given key parameters. // generator: profile Update -func UpdateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) (_err error) { +func UpdateProfileDevices(ctx context.Context, db dbtx, profileID int64, devices map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() - err := UpdateDevices(ctx, tx, "profile", int(profileID), devices) + err := UpdateDevices(ctx, db, "profile", int(profileID), devices) if err != nil { return fmt.Errorf("Replace Device for Profile failed: %w", err) } @@ -565,12 +565,12 @@ func UpdateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devi // UpdateProfileConfig updates the profile Config matching the given key parameters. // generator: profile Update -func UpdateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) (_err error) { +func UpdateProfileConfig(ctx context.Context, db dbtx, profileID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() - err := UpdateConfig(ctx, tx, "profile", int(profileID), config) + err := UpdateConfig(ctx, db, "profile", int(profileID), config) if err != nil { return fmt.Errorf("Replace Config for Profile failed: %w", err) } @@ -580,12 +580,12 @@ func UpdateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, confi // DeleteProfile deletes the profile matching the given key parameters. // generator: profile DeleteOne-by-Project-and-Name -func DeleteProfile(ctx context.Context, tx *sql.Tx, project string, name string) (_err error) { +func DeleteProfile(ctx context.Context, db dbtx, project string, name string) (_err error) { defer func() { _err = mapErr(_err, "Profile") }() - stmt, err := Stmt(tx, profileDeleteByProjectAndName) + stmt, err := Stmt(db, profileDeleteByProjectAndName) if err != nil { return fmt.Errorf("Failed to get \"profileDeleteByProjectAndName\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/projects.interface.mapper.go b/internal/server/db/cluster/projects.interface.mapper.go index 1cf8154458c..42e385d2411 100644 --- a/internal/server/db/cluster/projects.interface.mapper.go +++ b/internal/server/db/cluster/projects.interface.mapper.go @@ -2,46 +2,43 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // ProjectGenerated is an interface of generated methods for Project. type ProjectGenerated interface { // GetProjectConfig returns all available Project Config // generator: project GetMany - GetProjectConfig(ctx context.Context, tx *sql.Tx, projectID int, filters ...ConfigFilter) (map[string]string, error) + GetProjectConfig(ctx context.Context, db dbtx, projectID int, filters ...ConfigFilter) (map[string]string, error) // GetProjects returns all available projects. // generator: project GetMany - GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) ([]Project, error) + GetProjects(ctx context.Context, db dbtx, filters ...ProjectFilter) ([]Project, error) // GetProject returns the project with the given key. // generator: project GetOne - GetProject(ctx context.Context, tx *sql.Tx, name string) (*Project, error) + GetProject(ctx context.Context, db dbtx, name string) (*Project, error) // ProjectExists checks if a project with the given key exists. // generator: project Exists - ProjectExists(ctx context.Context, tx *sql.Tx, name string) (bool, error) + ProjectExists(ctx context.Context, db dbtx, name string) (bool, error) // CreateProjectConfig adds new project Config to the database. // generator: project Create - CreateProjectConfig(ctx context.Context, tx *sql.Tx, projectID int64, config map[string]string) error + CreateProjectConfig(ctx context.Context, db dbtx, projectID int64, config map[string]string) error // CreateProject adds a new project to the database. // generator: project Create - CreateProject(ctx context.Context, tx *sql.Tx, object Project) (int64, error) + CreateProject(ctx context.Context, db dbtx, object Project) (int64, error) // GetProjectID return the ID of the project with the given key. // generator: project ID - GetProjectID(ctx context.Context, tx *sql.Tx, name string) (int64, error) + GetProjectID(ctx context.Context, db dbtx, name string) (int64, error) // RenameProject renames the project matching the given key parameters. // generator: project Rename - RenameProject(ctx context.Context, tx *sql.Tx, name string, to string) error + RenameProject(ctx context.Context, db dbtx, name string, to string) error // DeleteProject deletes the project matching the given key parameters. // generator: project DeleteOne-by-Name - DeleteProject(ctx context.Context, tx *sql.Tx, name string) error + DeleteProject(ctx context.Context, db dbtx, name string) error } diff --git a/internal/server/db/cluster/projects.mapper.go b/internal/server/db/cluster/projects.mapper.go index 550242980fe..256ae07dd95 100644 --- a/internal/server/db/cluster/projects.mapper.go +++ b/internal/server/db/cluster/projects.mapper.go @@ -87,7 +87,7 @@ func getProjects(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Project, e } // getProjectsRaw can be used to run handwritten query strings to return a slice of objects. -func getProjectsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Project, error) { +func getProjectsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Project, error) { objects := make([]Project, 0) dest := func(scan func(dest ...any) error) error { @@ -102,7 +102,7 @@ func getProjectsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([ return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"projects\" table: %w", err) } @@ -112,7 +112,7 @@ func getProjectsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([ // GetProjects returns all available projects. // generator: project GetMany -func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) (_ []Project, _err error) { +func GetProjects(ctx context.Context, db dbtx, filters ...ProjectFilter) (_ []Project, _err error) { defer func() { _err = mapErr(_err, "Project") }() @@ -128,7 +128,7 @@ func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) (_ [ queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, projectObjects) + sqlStmt, err = Stmt(db, projectObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"projectObjects\" prepared statement: %w", err) } @@ -138,7 +138,7 @@ func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) (_ [ if filter.Name != nil && filter.ID == nil { args = append(args, []any{filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, projectObjectsByName) + sqlStmt, err = Stmt(db, projectObjectsByName) if err != nil { return nil, fmt.Errorf("Failed to get \"projectObjectsByName\" prepared statement: %w", err) } @@ -162,7 +162,7 @@ func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) (_ [ } else if filter.ID != nil && filter.Name == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, projectObjectsByID) + sqlStmt, err = Stmt(db, projectObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"projectObjectsByID\" prepared statement: %w", err) } @@ -195,7 +195,7 @@ func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) (_ [ objects, err = getProjects(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getProjectsRaw(ctx, tx, queryStr, args...) + objects, err = getProjectsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -207,12 +207,12 @@ func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) (_ [ // GetProjectConfig returns all available Project Config // generator: project GetMany -func GetProjectConfig(ctx context.Context, tx *sql.Tx, projectID int, filters ...ConfigFilter) (_ map[string]string, _err error) { +func GetProjectConfig(ctx context.Context, db dbtx, projectID int, filters ...ConfigFilter) (_ map[string]string, _err error) { defer func() { _err = mapErr(_err, "Project") }() - projectConfig, err := GetConfig(ctx, tx, "project", filters...) + projectConfig, err := GetConfig(ctx, db, "project", filters...) if err != nil { return nil, err } @@ -227,7 +227,7 @@ func GetProjectConfig(ctx context.Context, tx *sql.Tx, projectID int, filters .. // GetProject returns the project with the given key. // generator: project GetOne -func GetProject(ctx context.Context, tx *sql.Tx, name string) (_ *Project, _err error) { +func GetProject(ctx context.Context, db dbtx, name string) (_ *Project, _err error) { defer func() { _err = mapErr(_err, "Project") }() @@ -235,7 +235,7 @@ func GetProject(ctx context.Context, tx *sql.Tx, name string) (_ *Project, _err filter := ProjectFilter{} filter.Name = &name - objects, err := GetProjects(ctx, tx, filter) + objects, err := GetProjects(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"projects\" table: %w", err) } @@ -252,12 +252,12 @@ func GetProject(ctx context.Context, tx *sql.Tx, name string) (_ *Project, _err // ProjectExists checks if a project with the given key exists. // generator: project Exists -func ProjectExists(ctx context.Context, tx *sql.Tx, name string) (_ bool, _err error) { +func ProjectExists(ctx context.Context, db dbtx, name string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Project") }() - stmt, err := Stmt(tx, projectID) + stmt, err := Stmt(db, projectID) if err != nil { return false, fmt.Errorf("Failed to get \"projectID\" prepared statement: %w", err) } @@ -278,13 +278,13 @@ func ProjectExists(ctx context.Context, tx *sql.Tx, name string) (_ bool, _err e // CreateProject adds a new project to the database. // generator: project Create -func CreateProject(ctx context.Context, tx *sql.Tx, object Project) (_ int64, _err error) { +func CreateProject(ctx context.Context, db dbtx, object Project) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Project") }() // Check if a project with the same key exists. - exists, err := ProjectExists(ctx, tx, object.Name) + exists, err := ProjectExists(ctx, db, object.Name) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -300,7 +300,7 @@ func CreateProject(ctx context.Context, tx *sql.Tx, object Project) (_ int64, _e args[1] = object.Name // Prepared statement to use. - stmt, err := Stmt(tx, projectCreate) + stmt, err := Stmt(db, projectCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"projectCreate\" prepared statement: %w", err) } @@ -321,7 +321,7 @@ func CreateProject(ctx context.Context, tx *sql.Tx, object Project) (_ int64, _e // CreateProjectConfig adds new project Config to the database. // generator: project Create -func CreateProjectConfig(ctx context.Context, tx *sql.Tx, projectID int64, config map[string]string) (_err error) { +func CreateProjectConfig(ctx context.Context, db dbtx, projectID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Project") }() @@ -334,7 +334,7 @@ func CreateProjectConfig(ctx context.Context, tx *sql.Tx, projectID int64, confi Value: value, } - err := CreateConfig(ctx, tx, "project", insert) + err := CreateConfig(ctx, db, "project", insert) if err != nil { return fmt.Errorf("Insert Config failed for Project: %w", err) } @@ -346,12 +346,12 @@ func CreateProjectConfig(ctx context.Context, tx *sql.Tx, projectID int64, confi // GetProjectID return the ID of the project with the given key. // generator: project ID -func GetProjectID(ctx context.Context, tx *sql.Tx, name string) (_ int64, _err error) { +func GetProjectID(ctx context.Context, db dbtx, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Project") }() - stmt, err := Stmt(tx, projectID) + stmt, err := Stmt(db, projectID) if err != nil { return -1, fmt.Errorf("Failed to get \"projectID\" prepared statement: %w", err) } @@ -372,12 +372,12 @@ func GetProjectID(ctx context.Context, tx *sql.Tx, name string) (_ int64, _err e // RenameProject renames the project matching the given key parameters. // generator: project Rename -func RenameProject(ctx context.Context, tx *sql.Tx, name string, to string) (_err error) { +func RenameProject(ctx context.Context, db dbtx, name string, to string) (_err error) { defer func() { _err = mapErr(_err, "Project") }() - stmt, err := Stmt(tx, projectRename) + stmt, err := Stmt(db, projectRename) if err != nil { return fmt.Errorf("Failed to get \"projectRename\" prepared statement: %w", err) } @@ -401,12 +401,12 @@ func RenameProject(ctx context.Context, tx *sql.Tx, name string, to string) (_er // DeleteProject deletes the project matching the given key parameters. // generator: project DeleteOne-by-Name -func DeleteProject(ctx context.Context, tx *sql.Tx, name string) (_err error) { +func DeleteProject(ctx context.Context, db dbtx, name string) (_err error) { defer func() { _err = mapErr(_err, "Project") }() - stmt, err := Stmt(tx, projectDeleteByName) + stmt, err := Stmt(db, projectDeleteByName) if err != nil { return fmt.Errorf("Failed to get \"projectDeleteByName\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/snapshots.interface.mapper.go b/internal/server/db/cluster/snapshots.interface.mapper.go index 010bad0ed1e..96d69639815 100644 --- a/internal/server/db/cluster/snapshots.interface.mapper.go +++ b/internal/server/db/cluster/snapshots.interface.mapper.go @@ -2,54 +2,51 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // InstanceSnapshotGenerated is an interface of generated methods for InstanceSnapshot. type InstanceSnapshotGenerated interface { // GetInstanceSnapshotConfig returns all available InstanceSnapshot Config // generator: instance_snapshot GetMany - GetInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...ConfigFilter) (map[string]string, error) + GetInstanceSnapshotConfig(ctx context.Context, db dbtx, instanceSnapshotID int, filters ...ConfigFilter) (map[string]string, error) // GetInstanceSnapshotDevices returns all available InstanceSnapshot Devices // generator: instance_snapshot GetMany - GetInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...DeviceFilter) (map[string]Device, error) + GetInstanceSnapshotDevices(ctx context.Context, db dbtx, instanceSnapshotID int, filters ...DeviceFilter) (map[string]Device, error) // GetInstanceSnapshots returns all available instance_snapshots. // generator: instance_snapshot GetMany - GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSnapshotFilter) ([]InstanceSnapshot, error) + GetInstanceSnapshots(ctx context.Context, db dbtx, filters ...InstanceSnapshotFilter) ([]InstanceSnapshot, error) // GetInstanceSnapshot returns the instance_snapshot with the given key. // generator: instance_snapshot GetOne - GetInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (*InstanceSnapshot, error) + GetInstanceSnapshot(ctx context.Context, db dbtx, project string, instance string, name string) (*InstanceSnapshot, error) // GetInstanceSnapshotID return the ID of the instance_snapshot with the given key. // generator: instance_snapshot ID - GetInstanceSnapshotID(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (int64, error) + GetInstanceSnapshotID(ctx context.Context, db dbtx, project string, instance string, name string) (int64, error) // InstanceSnapshotExists checks if a instance_snapshot with the given key exists. // generator: instance_snapshot Exists - InstanceSnapshotExists(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (bool, error) + InstanceSnapshotExists(ctx context.Context, db dbtx, project string, instance string, name string) (bool, error) // CreateInstanceSnapshotConfig adds new instance_snapshot Config to the database. // generator: instance_snapshot Create - CreateInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, config map[string]string) error + CreateInstanceSnapshotConfig(ctx context.Context, db dbtx, instanceSnapshotID int64, config map[string]string) error // CreateInstanceSnapshotDevices adds new instance_snapshot Devices to the database. // generator: instance_snapshot Create - CreateInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, devices map[string]Device) error + CreateInstanceSnapshotDevices(ctx context.Context, db dbtx, instanceSnapshotID int64, devices map[string]Device) error // CreateInstanceSnapshot adds a new instance_snapshot to the database. // generator: instance_snapshot Create - CreateInstanceSnapshot(ctx context.Context, tx *sql.Tx, object InstanceSnapshot) (int64, error) + CreateInstanceSnapshot(ctx context.Context, db dbtx, object InstanceSnapshot) (int64, error) // RenameInstanceSnapshot renames the instance_snapshot matching the given key parameters. // generator: instance_snapshot Rename - RenameInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string, to string) error + RenameInstanceSnapshot(ctx context.Context, db dbtx, project string, instance string, name string, to string) error // DeleteInstanceSnapshot deletes the instance_snapshot matching the given key parameters. // generator: instance_snapshot DeleteOne-by-Project-and-Instance-and-Name - DeleteInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) error + DeleteInstanceSnapshot(ctx context.Context, db dbtx, project string, instance string, name string) error } diff --git a/internal/server/db/cluster/snapshots.mapper.go b/internal/server/db/cluster/snapshots.mapper.go index 641bb18445d..0560237ba96 100644 --- a/internal/server/db/cluster/snapshots.mapper.go +++ b/internal/server/db/cluster/snapshots.mapper.go @@ -98,7 +98,7 @@ func getInstanceSnapshots(ctx context.Context, stmt *sql.Stmt, args ...any) ([]I } // getInstanceSnapshotsRaw can be used to run handwritten query strings to return a slice of objects. -func getInstanceSnapshotsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]InstanceSnapshot, error) { +func getInstanceSnapshotsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]InstanceSnapshot, error) { objects := make([]InstanceSnapshot, 0) dest := func(scan func(dest ...any) error) error { @@ -113,7 +113,7 @@ func getInstanceSnapshotsRaw(ctx context.Context, tx *sql.Tx, sql string, args . return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"instances_snapshots\" table: %w", err) } @@ -123,7 +123,7 @@ func getInstanceSnapshotsRaw(ctx context.Context, tx *sql.Tx, sql string, args . // GetInstanceSnapshots returns all available instance_snapshots. // generator: instance_snapshot GetMany -func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSnapshotFilter) (_ []InstanceSnapshot, _err error) { +func GetInstanceSnapshots(ctx context.Context, db dbtx, filters ...InstanceSnapshotFilter) (_ []InstanceSnapshot, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() @@ -139,7 +139,7 @@ func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSn queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, instanceSnapshotObjects) + sqlStmt, err = Stmt(db, instanceSnapshotObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceSnapshotObjects\" prepared statement: %w", err) } @@ -149,7 +149,7 @@ func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSn if filter.Project != nil && filter.Instance != nil && filter.Name != nil && filter.ID == nil { args = append(args, []any{filter.Project, filter.Instance, filter.Name}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceSnapshotObjectsByProjectAndInstanceAndName) + sqlStmt, err = Stmt(db, instanceSnapshotObjectsByProjectAndInstanceAndName) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceSnapshotObjectsByProjectAndInstanceAndName\" prepared statement: %w", err) } @@ -173,7 +173,7 @@ func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSn } else if filter.Project != nil && filter.Instance != nil && filter.ID == nil && filter.Name == nil { args = append(args, []any{filter.Project, filter.Instance}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceSnapshotObjectsByProjectAndInstance) + sqlStmt, err = Stmt(db, instanceSnapshotObjectsByProjectAndInstance) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceSnapshotObjectsByProjectAndInstance\" prepared statement: %w", err) } @@ -197,7 +197,7 @@ func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSn } else if filter.ID != nil && filter.Project == nil && filter.Instance == nil && filter.Name == nil { args = append(args, []any{filter.ID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, instanceSnapshotObjectsByID) + sqlStmt, err = Stmt(db, instanceSnapshotObjectsByID) if err != nil { return nil, fmt.Errorf("Failed to get \"instanceSnapshotObjectsByID\" prepared statement: %w", err) } @@ -230,7 +230,7 @@ func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSn objects, err = getInstanceSnapshots(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getInstanceSnapshotsRaw(ctx, tx, queryStr, args...) + objects, err = getInstanceSnapshotsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -242,12 +242,12 @@ func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSn // GetInstanceSnapshotDevices returns all available InstanceSnapshot Devices // generator: instance_snapshot GetMany -func GetInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...DeviceFilter) (_ map[string]Device, _err error) { +func GetInstanceSnapshotDevices(ctx context.Context, db dbtx, instanceSnapshotID int, filters ...DeviceFilter) (_ map[string]Device, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() - instanceSnapshotDevices, err := GetDevices(ctx, tx, "instance_snapshot", filters...) + instanceSnapshotDevices, err := GetDevices(ctx, db, "instance_snapshot", filters...) if err != nil { return nil, err } @@ -267,12 +267,12 @@ func GetInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapsho // GetInstanceSnapshotConfig returns all available InstanceSnapshot Config // generator: instance_snapshot GetMany -func GetInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...ConfigFilter) (_ map[string]string, _err error) { +func GetInstanceSnapshotConfig(ctx context.Context, db dbtx, instanceSnapshotID int, filters ...ConfigFilter) (_ map[string]string, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() - instanceSnapshotConfig, err := GetConfig(ctx, tx, "instance_snapshot", filters...) + instanceSnapshotConfig, err := GetConfig(ctx, db, "instance_snapshot", filters...) if err != nil { return nil, err } @@ -287,7 +287,7 @@ func GetInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshot // GetInstanceSnapshot returns the instance_snapshot with the given key. // generator: instance_snapshot GetOne -func GetInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (_ *InstanceSnapshot, _err error) { +func GetInstanceSnapshot(ctx context.Context, db dbtx, project string, instance string, name string) (_ *InstanceSnapshot, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() @@ -297,7 +297,7 @@ func GetInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instan filter.Instance = &instance filter.Name = &name - objects, err := GetInstanceSnapshots(ctx, tx, filter) + objects, err := GetInstanceSnapshots(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"instances_snapshots\" table: %w", err) } @@ -314,12 +314,12 @@ func GetInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instan // GetInstanceSnapshotID return the ID of the instance_snapshot with the given key. // generator: instance_snapshot ID -func GetInstanceSnapshotID(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (_ int64, _err error) { +func GetInstanceSnapshotID(ctx context.Context, db dbtx, project string, instance string, name string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() - stmt, err := Stmt(tx, instanceSnapshotID) + stmt, err := Stmt(db, instanceSnapshotID) if err != nil { return -1, fmt.Errorf("Failed to get \"instanceSnapshotID\" prepared statement: %w", err) } @@ -340,12 +340,12 @@ func GetInstanceSnapshotID(ctx context.Context, tx *sql.Tx, project string, inst // InstanceSnapshotExists checks if a instance_snapshot with the given key exists. // generator: instance_snapshot Exists -func InstanceSnapshotExists(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (_ bool, _err error) { +func InstanceSnapshotExists(ctx context.Context, db dbtx, project string, instance string, name string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() - stmt, err := Stmt(tx, instanceSnapshotID) + stmt, err := Stmt(db, instanceSnapshotID) if err != nil { return false, fmt.Errorf("Failed to get \"instanceSnapshotID\" prepared statement: %w", err) } @@ -366,13 +366,13 @@ func InstanceSnapshotExists(ctx context.Context, tx *sql.Tx, project string, ins // CreateInstanceSnapshot adds a new instance_snapshot to the database. // generator: instance_snapshot Create -func CreateInstanceSnapshot(ctx context.Context, tx *sql.Tx, object InstanceSnapshot) (_ int64, _err error) { +func CreateInstanceSnapshot(ctx context.Context, db dbtx, object InstanceSnapshot) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() // Check if a instance_snapshot with the same key exists. - exists, err := InstanceSnapshotExists(ctx, tx, object.Project, object.Instance, object.Name) + exists, err := InstanceSnapshotExists(ctx, db, object.Project, object.Instance, object.Name) if err != nil { return -1, fmt.Errorf("Failed to check for duplicates: %w", err) } @@ -393,7 +393,7 @@ func CreateInstanceSnapshot(ctx context.Context, tx *sql.Tx, object InstanceSnap args[6] = object.ExpiryDate // Prepared statement to use. - stmt, err := Stmt(tx, instanceSnapshotCreate) + stmt, err := Stmt(db, instanceSnapshotCreate) if err != nil { return -1, fmt.Errorf("Failed to get \"instanceSnapshotCreate\" prepared statement: %w", err) } @@ -414,7 +414,7 @@ func CreateInstanceSnapshot(ctx context.Context, tx *sql.Tx, object InstanceSnap // CreateInstanceSnapshotDevices adds new instance_snapshot Devices to the database. // generator: instance_snapshot Create -func CreateInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, devices map[string]Device) (_err error) { +func CreateInstanceSnapshotDevices(ctx context.Context, db dbtx, instanceSnapshotID int64, devices map[string]Device) (_err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() @@ -424,7 +424,7 @@ func CreateInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnap devices[key] = device } - err := CreateDevices(ctx, tx, "instance_snapshot", devices) + err := CreateDevices(ctx, db, "instance_snapshot", devices) if err != nil { return fmt.Errorf("Insert Device failed for InstanceSnapshot: %w", err) } @@ -434,7 +434,7 @@ func CreateInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnap // CreateInstanceSnapshotConfig adds new instance_snapshot Config to the database. // generator: instance_snapshot Create -func CreateInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, config map[string]string) (_err error) { +func CreateInstanceSnapshotConfig(ctx context.Context, db dbtx, instanceSnapshotID int64, config map[string]string) (_err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() @@ -447,7 +447,7 @@ func CreateInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnaps Value: value, } - err := CreateConfig(ctx, tx, "instance_snapshot", insert) + err := CreateConfig(ctx, db, "instance_snapshot", insert) if err != nil { return fmt.Errorf("Insert Config failed for InstanceSnapshot: %w", err) } @@ -459,12 +459,12 @@ func CreateInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnaps // RenameInstanceSnapshot renames the instance_snapshot matching the given key parameters. // generator: instance_snapshot Rename -func RenameInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string, to string) (_err error) { +func RenameInstanceSnapshot(ctx context.Context, db dbtx, project string, instance string, name string, to string) (_err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() - stmt, err := Stmt(tx, instanceSnapshotRename) + stmt, err := Stmt(db, instanceSnapshotRename) if err != nil { return fmt.Errorf("Failed to get \"instanceSnapshotRename\" prepared statement: %w", err) } @@ -488,12 +488,12 @@ func RenameInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, ins // DeleteInstanceSnapshot deletes the instance_snapshot matching the given key parameters. // generator: instance_snapshot DeleteOne-by-Project-and-Instance-and-Name -func DeleteInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (_err error) { +func DeleteInstanceSnapshot(ctx context.Context, db dbtx, project string, instance string, name string) (_err error) { defer func() { _err = mapErr(_err, "Instance_snapshot") }() - stmt, err := Stmt(tx, instanceSnapshotDeleteByProjectAndInstanceAndName) + stmt, err := Stmt(db, instanceSnapshotDeleteByProjectAndInstanceAndName) if err != nil { return fmt.Errorf("Failed to get \"instanceSnapshotDeleteByProjectAndInstanceAndName\" prepared statement: %w", err) } diff --git a/internal/server/db/cluster/warnings.interface.mapper.go b/internal/server/db/cluster/warnings.interface.mapper.go index 9457ee8b959..c5414eabf22 100644 --- a/internal/server/db/cluster/warnings.interface.mapper.go +++ b/internal/server/db/cluster/warnings.interface.mapper.go @@ -2,34 +2,31 @@ package cluster -import ( - "context" - "database/sql" -) +import "context" // WarningGenerated is an interface of generated methods for Warning. type WarningGenerated interface { // GetWarnings returns all available warnings. // generator: warning GetMany - GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) ([]Warning, error) + GetWarnings(ctx context.Context, db dbtx, filters ...WarningFilter) ([]Warning, error) // GetWarning returns the warning with the given key. // generator: warning GetOne-by-UUID - GetWarning(ctx context.Context, tx *sql.Tx, uuid string) (*Warning, error) + GetWarning(ctx context.Context, db dbtx, uuid string) (*Warning, error) // DeleteWarning deletes the warning matching the given key parameters. // generator: warning DeleteOne-by-UUID - DeleteWarning(ctx context.Context, tx *sql.Tx, uuid string) error + DeleteWarning(ctx context.Context, db dbtx, uuid string) error // DeleteWarnings deletes the warning matching the given key parameters. // generator: warning DeleteMany-by-EntityTypeCode-and-EntityID - DeleteWarnings(ctx context.Context, tx *sql.Tx, entityTypeCode int, entityID int) error + DeleteWarnings(ctx context.Context, db dbtx, entityTypeCode int, entityID int) error // GetWarningID return the ID of the warning with the given key. // generator: warning ID - GetWarningID(ctx context.Context, tx *sql.Tx, uuid string) (int64, error) + GetWarningID(ctx context.Context, db dbtx, uuid string) (int64, error) // WarningExists checks if a warning with the given key exists. // generator: warning Exists - WarningExists(ctx context.Context, tx *sql.Tx, uuid string) (bool, error) + WarningExists(ctx context.Context, db dbtx, uuid string) (bool, error) } diff --git a/internal/server/db/cluster/warnings.mapper.go b/internal/server/db/cluster/warnings.mapper.go index 174aa93fd00..03a537bd7a9 100644 --- a/internal/server/db/cluster/warnings.mapper.go +++ b/internal/server/db/cluster/warnings.mapper.go @@ -118,7 +118,7 @@ func getWarnings(ctx context.Context, stmt *sql.Stmt, args ...any) ([]Warning, e } // getWarningsRaw can be used to run handwritten query strings to return a slice of objects. -func getWarningsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([]Warning, error) { +func getWarningsRaw(ctx context.Context, db dbtx, sql string, args ...any) ([]Warning, error) { objects := make([]Warning, 0) dest := func(scan func(dest ...any) error) error { @@ -133,7 +133,7 @@ func getWarningsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([ return nil } - err := scan(ctx, tx, sql, dest, args...) + err := scan(ctx, db, sql, dest, args...) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"warnings\" table: %w", err) } @@ -143,7 +143,7 @@ func getWarningsRaw(ctx context.Context, tx *sql.Tx, sql string, args ...any) ([ // GetWarnings returns all available warnings. // generator: warning GetMany -func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ []Warning, _err error) { +func GetWarnings(ctx context.Context, db dbtx, filters ...WarningFilter) (_ []Warning, _err error) { defer func() { _err = mapErr(_err, "Warning") }() @@ -159,7 +159,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ queryParts := [2]string{} if len(filters) == 0 { - sqlStmt, err = Stmt(tx, warningObjects) + sqlStmt, err = Stmt(db, warningObjects) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjects\" prepared statement: %w", err) } @@ -169,7 +169,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ if filter.Node != nil && filter.TypeCode != nil && filter.Project != nil && filter.EntityTypeCode != nil && filter.EntityID != nil && filter.ID == nil && filter.UUID == nil && filter.Status == nil { args = append(args, []any{filter.Node, filter.TypeCode, filter.Project, filter.EntityTypeCode, filter.EntityID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, warningObjectsByNodeAndTypeCodeAndProjectAndEntityTypeCodeAndEntityID) + sqlStmt, err = Stmt(db, warningObjectsByNodeAndTypeCodeAndProjectAndEntityTypeCodeAndEntityID) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjectsByNodeAndTypeCodeAndProjectAndEntityTypeCodeAndEntityID\" prepared statement: %w", err) } @@ -193,7 +193,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ } else if filter.Node != nil && filter.TypeCode != nil && filter.Project != nil && filter.ID == nil && filter.UUID == nil && filter.EntityTypeCode == nil && filter.EntityID == nil && filter.Status == nil { args = append(args, []any{filter.Node, filter.TypeCode, filter.Project}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, warningObjectsByNodeAndTypeCodeAndProject) + sqlStmt, err = Stmt(db, warningObjectsByNodeAndTypeCodeAndProject) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjectsByNodeAndTypeCodeAndProject\" prepared statement: %w", err) } @@ -217,7 +217,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ } else if filter.Node != nil && filter.TypeCode != nil && filter.ID == nil && filter.UUID == nil && filter.Project == nil && filter.EntityTypeCode == nil && filter.EntityID == nil && filter.Status == nil { args = append(args, []any{filter.Node, filter.TypeCode}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, warningObjectsByNodeAndTypeCode) + sqlStmt, err = Stmt(db, warningObjectsByNodeAndTypeCode) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjectsByNodeAndTypeCode\" prepared statement: %w", err) } @@ -241,7 +241,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ } else if filter.UUID != nil && filter.ID == nil && filter.Project == nil && filter.Node == nil && filter.TypeCode == nil && filter.EntityTypeCode == nil && filter.EntityID == nil && filter.Status == nil { args = append(args, []any{filter.UUID}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, warningObjectsByUUID) + sqlStmt, err = Stmt(db, warningObjectsByUUID) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjectsByUUID\" prepared statement: %w", err) } @@ -265,7 +265,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ } else if filter.Status != nil && filter.ID == nil && filter.UUID == nil && filter.Project == nil && filter.Node == nil && filter.TypeCode == nil && filter.EntityTypeCode == nil && filter.EntityID == nil { args = append(args, []any{filter.Status}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, warningObjectsByStatus) + sqlStmt, err = Stmt(db, warningObjectsByStatus) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjectsByStatus\" prepared statement: %w", err) } @@ -289,7 +289,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ } else if filter.Project != nil && filter.ID == nil && filter.UUID == nil && filter.Node == nil && filter.TypeCode == nil && filter.EntityTypeCode == nil && filter.EntityID == nil && filter.Status == nil { args = append(args, []any{filter.Project}...) if len(filters) == 1 { - sqlStmt, err = Stmt(tx, warningObjectsByProject) + sqlStmt, err = Stmt(db, warningObjectsByProject) if err != nil { return nil, fmt.Errorf("Failed to get \"warningObjectsByProject\" prepared statement: %w", err) } @@ -322,7 +322,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ objects, err = getWarnings(ctx, sqlStmt, args...) } else { queryStr := strings.Join(queryParts[:], "ORDER BY") - objects, err = getWarningsRaw(ctx, tx, queryStr, args...) + objects, err = getWarningsRaw(ctx, db, queryStr, args...) } if err != nil { @@ -334,7 +334,7 @@ func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) (_ [ // GetWarning returns the warning with the given key. // generator: warning GetOne-by-UUID -func GetWarning(ctx context.Context, tx *sql.Tx, uuid string) (_ *Warning, _err error) { +func GetWarning(ctx context.Context, db dbtx, uuid string) (_ *Warning, _err error) { defer func() { _err = mapErr(_err, "Warning") }() @@ -342,7 +342,7 @@ func GetWarning(ctx context.Context, tx *sql.Tx, uuid string) (_ *Warning, _err filter := WarningFilter{} filter.UUID = &uuid - objects, err := GetWarnings(ctx, tx, filter) + objects, err := GetWarnings(ctx, db, filter) if err != nil { return nil, fmt.Errorf("Failed to fetch from \"warnings\" table: %w", err) } @@ -359,12 +359,12 @@ func GetWarning(ctx context.Context, tx *sql.Tx, uuid string) (_ *Warning, _err // DeleteWarning deletes the warning matching the given key parameters. // generator: warning DeleteOne-by-UUID -func DeleteWarning(ctx context.Context, tx *sql.Tx, uuid string) (_err error) { +func DeleteWarning(ctx context.Context, db dbtx, uuid string) (_err error) { defer func() { _err = mapErr(_err, "Warning") }() - stmt, err := Stmt(tx, warningDeleteByUUID) + stmt, err := Stmt(db, warningDeleteByUUID) if err != nil { return fmt.Errorf("Failed to get \"warningDeleteByUUID\" prepared statement: %w", err) } @@ -390,12 +390,12 @@ func DeleteWarning(ctx context.Context, tx *sql.Tx, uuid string) (_err error) { // DeleteWarnings deletes the warning matching the given key parameters. // generator: warning DeleteMany-by-EntityTypeCode-and-EntityID -func DeleteWarnings(ctx context.Context, tx *sql.Tx, entityTypeCode int, entityID int) (_err error) { +func DeleteWarnings(ctx context.Context, db dbtx, entityTypeCode int, entityID int) (_err error) { defer func() { _err = mapErr(_err, "Warning") }() - stmt, err := Stmt(tx, warningDeleteByEntityTypeCodeAndEntityID) + stmt, err := Stmt(db, warningDeleteByEntityTypeCodeAndEntityID) if err != nil { return fmt.Errorf("Failed to get \"warningDeleteByEntityTypeCodeAndEntityID\" prepared statement: %w", err) } @@ -415,12 +415,12 @@ func DeleteWarnings(ctx context.Context, tx *sql.Tx, entityTypeCode int, entityI // GetWarningID return the ID of the warning with the given key. // generator: warning ID -func GetWarningID(ctx context.Context, tx *sql.Tx, uuid string) (_ int64, _err error) { +func GetWarningID(ctx context.Context, db dbtx, uuid string) (_ int64, _err error) { defer func() { _err = mapErr(_err, "Warning") }() - stmt, err := Stmt(tx, warningID) + stmt, err := Stmt(db, warningID) if err != nil { return -1, fmt.Errorf("Failed to get \"warningID\" prepared statement: %w", err) } @@ -441,12 +441,12 @@ func GetWarningID(ctx context.Context, tx *sql.Tx, uuid string) (_ int64, _err e // WarningExists checks if a warning with the given key exists. // generator: warning Exists -func WarningExists(ctx context.Context, tx *sql.Tx, uuid string) (_ bool, _err error) { +func WarningExists(ctx context.Context, db dbtx, uuid string) (_ bool, _err error) { defer func() { _err = mapErr(_err, "Warning") }() - stmt, err := Stmt(tx, warningID) + stmt, err := Stmt(db, warningID) if err != nil { return false, fmt.Errorf("Failed to get \"warningID\" prepared statement: %w", err) } From c8f59627f331053958a2f4fca019523d6cbcab9c Mon Sep 17 00:00:00 2001 From: Lucas Bremgartner Date: Mon, 3 Mar 2025 17:48:19 +0100 Subject: [PATCH 3/3] lint: Add short import exception for *.mapper.go *.mapper.go files are formatted using goimports which uses short import format, if there is only a single import. Signed-off-by: Lucas Bremgartner --- test/lint/no-short-form-imports.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lint/no-short-form-imports.sh b/test/lint/no-short-form-imports.sh index 5bf4688d8d8..9e40f897359 100755 --- a/test/lint/no-short-form-imports.sh +++ b/test/lint/no-short-form-imports.sh @@ -2,7 +2,7 @@ echo "Checking for short form imports..." -OUT=$(git grep --untracked -n -P '^\s*import\s+"' '*.go' ':!:test/mini-oidc/storage/*.go' | grep -v ':import "C"$' || true) +OUT=$(git grep --untracked -n -P '^\s*import\s+"' '*.go' ':!:test/mini-oidc/storage/*.go' ':!:*.mapper.go' | grep -v ':import "C"$' || true) if [ -n "${OUT}" ]; then echo "ERROR: found short form imports: ${OUT}" exit 1