initial commit
This commit is contained in:
79
models/items.go
Normal file
79
models/items.go
Normal file
@ -0,0 +1,79 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type Item struct {
|
||||
bun.BaseModel `bun:"table:items"`
|
||||
ItemID int64 `bun:",pk,autoincrement" json:"item_id" yaml:"item_id"`
|
||||
ReceiptID int64 `json:"receipt_id" yaml:"receipt_id"`
|
||||
Title string `bun:"item,type:text" json:"item" yaml:"item"`
|
||||
Quantity float64 `bun:"quantity" json:"quantity" yaml:"quantity"`
|
||||
Price float64 `bun:"price" json:"price" yaml:"price"`
|
||||
Category string `bun:"category" json:"category" yaml:"category"`
|
||||
}
|
||||
|
||||
type Items []*Item
|
||||
|
||||
var _ bun.AfterCreateTableHook = (*Item)(nil)
|
||||
|
||||
func (*Item) AfterCreateTable(ctx context.Context, query *bun.CreateTableQuery) error {
|
||||
_, err := query.DB().NewCreateIndex().Model((*Item)(nil)).Index("idx_items_item").Column("item").Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = query.DB().NewCreateIndex().Model((*Item)(nil)).Index("idx_items_category").Column("category").Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Add .
|
||||
func (i *Item) Add(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewInsert().Model(i).Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Update .
|
||||
func (i *Item) Update(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewUpdate().Model(i).WherePK().Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Add .
|
||||
func (i *Items) Add(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewInsert().Model(i).Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// List .
|
||||
func (i *Items) List(db *bun.DB, ctx context.Context, r int) (Items, error) {
|
||||
var items Items
|
||||
_, err := db.NewSelect().Model(&items).Where("receipt_id = ?", r).ScanAndCount(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
// Remove .
|
||||
func (i *Items) Remove(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewDelete().Model(i).WherePK().Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user