148 lines
3.7 KiB
Go
148 lines
3.7 KiB
Go
// Package models contains generated code for schema 'bocchi.sqlite3'.
|
|
package models
|
|
|
|
// Code generated by xo. DO NOT EDIT.
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
)
|
|
|
|
// Bocchi represents a row from 'bocchi'.
|
|
type Bocchi struct {
|
|
ID sql.NullString `json:"id"` // id
|
|
Name sql.NullString `json:"name"` // name
|
|
Performances sql.NullInt64 `json:"performances"` // performances
|
|
// xo fields
|
|
_exists, _deleted bool
|
|
}
|
|
|
|
// Exists returns true when the [Bocchi] exists in the database.
|
|
func (b *Bocchi) Exists() bool {
|
|
return b._exists
|
|
}
|
|
|
|
// Deleted returns true when the [Bocchi] has been marked for deletion
|
|
// from the database.
|
|
func (b *Bocchi) Deleted() bool {
|
|
return b._deleted
|
|
}
|
|
|
|
// Insert inserts the [Bocchi] to the database.
|
|
func (b *Bocchi) Insert(ctx context.Context, db DB) error {
|
|
switch {
|
|
case b._exists: // already exists
|
|
return logerror(&ErrInsertFailed{ErrAlreadyExists})
|
|
case b._deleted: // deleted
|
|
return logerror(&ErrInsertFailed{ErrMarkedForDeletion})
|
|
}
|
|
// insert (manual)
|
|
const sqlstr = `INSERT INTO bocchi (` +
|
|
`id, name, performances` +
|
|
`) VALUES (` +
|
|
`$1, $2, $3` +
|
|
`)`
|
|
// run
|
|
logf(sqlstr, b.ID, b.Name, b.Performances)
|
|
if _, err := db.ExecContext(ctx, sqlstr, b.ID, b.Name, b.Performances); err != nil {
|
|
return logerror(err)
|
|
}
|
|
// set exists
|
|
b._exists = true
|
|
return nil
|
|
}
|
|
|
|
// Update updates a [Bocchi] in the database.
|
|
func (b *Bocchi) Update(ctx context.Context, db DB) error {
|
|
switch {
|
|
case !b._exists: // doesn't exist
|
|
return logerror(&ErrUpdateFailed{ErrDoesNotExist})
|
|
case b._deleted: // deleted
|
|
return logerror(&ErrUpdateFailed{ErrMarkedForDeletion})
|
|
}
|
|
// update with primary key
|
|
const sqlstr = `UPDATE bocchi SET ` +
|
|
`name = $1, performances = $2 ` +
|
|
`WHERE id = $3`
|
|
// run
|
|
logf(sqlstr, b.Name, b.Performances, b.ID)
|
|
if _, err := db.ExecContext(ctx, sqlstr, b.Name, b.Performances, b.ID); err != nil {
|
|
return logerror(err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Save saves the [Bocchi] to the database.
|
|
func (b *Bocchi) Save(ctx context.Context, db DB) error {
|
|
if b.Exists() {
|
|
return b.Update(ctx, db)
|
|
}
|
|
return b.Insert(ctx, db)
|
|
}
|
|
|
|
// Upsert performs an upsert for [Bocchi].
|
|
func (b *Bocchi) Upsert(ctx context.Context, db DB) error {
|
|
switch {
|
|
case b._deleted: // deleted
|
|
return logerror(&ErrUpsertFailed{ErrMarkedForDeletion})
|
|
}
|
|
// upsert
|
|
const sqlstr = `INSERT INTO bocchi (` +
|
|
`id, name, performances` +
|
|
`) VALUES (` +
|
|
`$1, $2, $3` +
|
|
`)` +
|
|
` ON CONFLICT (id) DO ` +
|
|
`UPDATE SET ` +
|
|
`name = EXCLUDED.name, performances = EXCLUDED.performances `
|
|
// run
|
|
logf(sqlstr, b.ID, b.Name, b.Performances)
|
|
if _, err := db.ExecContext(ctx, sqlstr, b.ID, b.Name, b.Performances); err != nil {
|
|
return logerror(err)
|
|
}
|
|
// set exists
|
|
b._exists = true
|
|
return nil
|
|
}
|
|
|
|
// Delete deletes the [Bocchi] from the database.
|
|
func (b *Bocchi) Delete(ctx context.Context, db DB) error {
|
|
switch {
|
|
case !b._exists: // doesn't exist
|
|
return nil
|
|
case b._deleted: // deleted
|
|
return nil
|
|
}
|
|
// delete with single primary key
|
|
const sqlstr = `DELETE FROM bocchi ` +
|
|
`WHERE id = $1`
|
|
// run
|
|
logf(sqlstr, b.ID)
|
|
if _, err := db.ExecContext(ctx, sqlstr, b.ID); err != nil {
|
|
return logerror(err)
|
|
}
|
|
// set deleted
|
|
b._deleted = true
|
|
return nil
|
|
}
|
|
|
|
// BocchiByID retrieves a row from 'bocchi' as a [Bocchi].
|
|
//
|
|
// Generated from index 'sqlite_autoindex_bocchi_1'.
|
|
func BocchiByID(ctx context.Context, db DB, id sql.NullString) (*Bocchi, error) {
|
|
// query
|
|
const sqlstr = `SELECT ` +
|
|
`id, name, performances ` +
|
|
`FROM bocchi ` +
|
|
`WHERE id = $1`
|
|
// run
|
|
logf(sqlstr, id)
|
|
b := Bocchi{
|
|
_exists: true,
|
|
}
|
|
if err := db.QueryRowContext(ctx, sqlstr, id).Scan(&b.ID, &b.Name, &b.Performances); err != nil {
|
|
return nil, logerror(err)
|
|
}
|
|
return &b, nil
|
|
}
|