initial commit

This commit is contained in:
2025-08-27 08:48:19 -04:00
commit 85bac6b12b
25 changed files with 570 additions and 0 deletions

View File

@@ -0,0 +1,147 @@
// 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
}