package db import ( "context" "fmt" "github.com/jmoiron/sqlx" ) type PackageWarningsData struct { ID string Type string Warning []string Error []string Reinstallable bool Manifest string } func (p *PackageWarningsData) InsertSliceType(tx *sqlx.Tx, data *InsertId[string], sliceType string) error { query := fmt.Sprintf(` INSERT INTO package_warnings_data (%s, id, type, reinstallable, manifest) VALUES ($1, $2, $3, $4, $5)`, data.fieldName) args := []any{data.id, p.ID, p.Type, p.Reinstallable, p.Manifest} _, err := tx.Exec(query, args...) if err != nil { return err } return nil } func (p *PackageWarningsData) Insert(tx *sqlx.Tx, data *InsertId[string]) error { query := fmt.Sprintf(` INSERT INTO package_warnings_data (%s, id, type, reinstallable, manifest) VALUES ($1, $2, $3, $4, $5)`, data.fieldName) args := []any{data.id, p.ID, p.Type, p.Reinstallable, p.Manifest} _, err := tx.Exec(query, args...) if err != nil { return err } return nil } func (p *PackageWarningsData) InsertCtx(ctx context.Context, tx *sqlx.Tx, data *InsertId[string]) error { query := fmt.Sprintf(` INSERT INTO package_warnings_data (%s, id, type, reinstallable, manifest) VALUES ($1, $2, $3, $4, $5) RETURNING id`, data.fieldName) args := []any{data.id, p.ID, p.Type, p.Reinstallable, p.Manifest} _, err := tx.ExecContext(ctx, query, args...) if err != nil { return err } return nil } type PackageWarning struct { ID string Key string Value PackageWarningsData } func (p *PackageWarning) Insert(tx *sqlx.Tx, data *InsertId[uint]) error { query := fmt.Sprintf(` INSERT INTO package_warnings (%s, id) VALUES ($1, $2)`, data.fieldName) args := []any{data.id, p.ID} _, err := tx.Execx(query, args...) if err != nil { return err } InsertWithCtx(tx, &p.Value, &InsertId[string]{id: p.ID}) return nil } func (p *PackageWarning) InsertCtx(ctx context.Context, tx *sqlx.Tx, data *InsertId[uint]) error { query := fmt.Sprintf(` INSERT INTO package_warnings (%s, id) VALUES ($1, $2)`, data.fieldName) args := []any{data.id, p.ID} _, err := tx.Exec(query, args...) if err != nil { return err } InsertWithCtx(tx, &p.Value, &InsertId[string]{id: p.ID}) return nil }