154 lines
4.2 KiB
Go
154 lines
4.2 KiB
Go
|
package models
|
||
|
|
||
|
// Code generated by xo. DO NOT EDIT.
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
// UserInfo represents a row from 'user_info'.
|
||
|
type UserInfo struct {
|
||
|
UserID string `json:"user_id"` // user_id
|
||
|
GradeLevel int `json:"grade_level"` // grade_level
|
||
|
Teacher bool `json:"teacher"` // teacher
|
||
|
Admin bool `json:"admin"` // admin
|
||
|
// xo fields
|
||
|
_exists, _deleted bool
|
||
|
}
|
||
|
|
||
|
// Exists returns true when the UserInfo exists in the database.
|
||
|
func (ui *UserInfo) Exists() bool {
|
||
|
return ui._exists
|
||
|
}
|
||
|
|
||
|
// Deleted returns true when the UserInfo has been marked for deletion from
|
||
|
// the database.
|
||
|
func (ui *UserInfo) Deleted() bool {
|
||
|
return ui._deleted
|
||
|
}
|
||
|
|
||
|
// Insert inserts the UserInfo to the database.
|
||
|
func (ui *UserInfo) Insert(ctx context.Context, db DB) error {
|
||
|
switch {
|
||
|
case ui._exists: // already exists
|
||
|
return logerror(&ErrInsertFailed{ErrAlreadyExists})
|
||
|
case ui._deleted: // deleted
|
||
|
return logerror(&ErrInsertFailed{ErrMarkedForDeletion})
|
||
|
}
|
||
|
// insert (manual)
|
||
|
const sqlstr = `INSERT INTO user_info (` +
|
||
|
`user_id, grade_level, teacher, admin` +
|
||
|
`) VALUES (` +
|
||
|
`$1, $2, $3, $4` +
|
||
|
`)`
|
||
|
// run
|
||
|
logf(sqlstr, ui.UserID, ui.GradeLevel, ui.Teacher, ui.Admin)
|
||
|
if _, err := db.ExecContext(ctx, sqlstr, ui.UserID, ui.GradeLevel, ui.Teacher, ui.Admin); err != nil {
|
||
|
return logerror(err)
|
||
|
}
|
||
|
// set exists
|
||
|
ui._exists = true
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Update updates a UserInfo in the database.
|
||
|
func (ui *UserInfo) Update(ctx context.Context, db DB) error {
|
||
|
switch {
|
||
|
case !ui._exists: // doesn't exist
|
||
|
return logerror(&ErrUpdateFailed{ErrDoesNotExist})
|
||
|
case ui._deleted: // deleted
|
||
|
return logerror(&ErrUpdateFailed{ErrMarkedForDeletion})
|
||
|
}
|
||
|
// update with primary key
|
||
|
const sqlstr = `UPDATE user_info SET ` +
|
||
|
`grade_level = $1, teacher = $2, admin = $3 ` +
|
||
|
`WHERE user_id = $4`
|
||
|
// run
|
||
|
logf(sqlstr, ui.GradeLevel, ui.Teacher, ui.Admin, ui.UserID)
|
||
|
if _, err := db.ExecContext(ctx, sqlstr, ui.GradeLevel, ui.Teacher, ui.Admin, ui.UserID); err != nil {
|
||
|
return logerror(err)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Save saves the UserInfo to the database.
|
||
|
func (ui *UserInfo) Save(ctx context.Context, db DB) error {
|
||
|
if ui.Exists() {
|
||
|
return ui.Update(ctx, db)
|
||
|
}
|
||
|
return ui.Insert(ctx, db)
|
||
|
}
|
||
|
|
||
|
// Upsert performs an upsert for UserInfo.
|
||
|
func (ui *UserInfo) Upsert(ctx context.Context, db DB) error {
|
||
|
switch {
|
||
|
case ui._deleted: // deleted
|
||
|
return logerror(&ErrUpsertFailed{ErrMarkedForDeletion})
|
||
|
}
|
||
|
// upsert
|
||
|
const sqlstr = `INSERT INTO user_info (` +
|
||
|
`user_id, grade_level, teacher, admin` +
|
||
|
`) VALUES (` +
|
||
|
`$1, $2, $3, $4` +
|
||
|
`)` +
|
||
|
` ON CONFLICT (user_id) DO ` +
|
||
|
`UPDATE SET ` +
|
||
|
`grade_level = EXCLUDED.grade_level, teacher = EXCLUDED.teacher, admin = EXCLUDED.admin `
|
||
|
// run
|
||
|
logf(sqlstr, ui.UserID, ui.GradeLevel, ui.Teacher, ui.Admin)
|
||
|
if _, err := db.ExecContext(ctx, sqlstr, ui.UserID, ui.GradeLevel, ui.Teacher, ui.Admin); err != nil {
|
||
|
return logerror(err)
|
||
|
}
|
||
|
// set exists
|
||
|
ui._exists = true
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Delete deletes the UserInfo from the database.
|
||
|
func (ui *UserInfo) Delete(ctx context.Context, db DB) error {
|
||
|
switch {
|
||
|
case !ui._exists: // doesn't exist
|
||
|
return nil
|
||
|
case ui._deleted: // deleted
|
||
|
return nil
|
||
|
}
|
||
|
// delete with single primary key
|
||
|
const sqlstr = `DELETE FROM user_info ` +
|
||
|
`WHERE user_id = $1`
|
||
|
// run
|
||
|
logf(sqlstr, ui.UserID)
|
||
|
if _, err := db.ExecContext(ctx, sqlstr, ui.UserID); err != nil {
|
||
|
return logerror(err)
|
||
|
}
|
||
|
// set deleted
|
||
|
ui._deleted = true
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// UserInfoByUserID retrieves a row from 'user_info' as a UserInfo.
|
||
|
//
|
||
|
// Generated from index 'sqlite_autoindex_user_info_1'.
|
||
|
func UserInfoByUserID(ctx context.Context, db DB, userID string) (*UserInfo, error) {
|
||
|
// query
|
||
|
const sqlstr = `SELECT ` +
|
||
|
`user_id, grade_level, teacher, admin ` +
|
||
|
`FROM user_info ` +
|
||
|
`WHERE user_id = $1`
|
||
|
// run
|
||
|
logf(sqlstr, userID)
|
||
|
ui := UserInfo{
|
||
|
_exists: true,
|
||
|
}
|
||
|
if err := db.QueryRowContext(ctx, sqlstr, userID).Scan(&ui.UserID, &ui.GradeLevel, &ui.Teacher, &ui.Admin); err != nil {
|
||
|
return nil, logerror(err)
|
||
|
}
|
||
|
return &ui, nil
|
||
|
}
|
||
|
|
||
|
// User returns the User associated with the UserInfo's (UserID).
|
||
|
//
|
||
|
// Generated from foreign key 'user_info_user_id_fkey'.
|
||
|
func (ui *UserInfo) User(ctx context.Context, db DB) (*User, error) {
|
||
|
return UserByID(ctx, db, ui.UserID)
|
||
|
}
|