// 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 }