add comments, make errors more consistent

This commit is contained in:
katefort 2025-04-23 16:23:59 -05:00
parent e762fc2abd
commit 34218e7306
7 changed files with 37 additions and 21 deletions

View file

@ -59,7 +59,7 @@ func (d *Database) FindClaimsByProductID(product_id int) (claims []models.Claim,
return
}
// exists only for testing
// Testing function
func (database *Database) FindUserClaimById(claim_id int) (*UserClaim, error) {
ctx := context.Background()
@ -73,7 +73,8 @@ func (database *Database) FindUserClaimById(claim_id int) (*UserClaim, error) {
return &claim, err
}
func (d *Database) CreateUserClaim(product_id int, form models.UserClaimForm) (*UserClaim, error) {
// InsertUserClaim puts creates a new user claim database object and inserts in DB.
func (d *Database) InsertUserClaim(product_id int, form models.UserClaimForm) (*UserClaim, error) {
ctx := context.Background()
var uc = UserClaim{
Product_id: product_id,
@ -81,7 +82,7 @@ func (d *Database) CreateUserClaim(product_id int, form models.UserClaimForm) (*
Evidence: form.Evidence,
Claims: form.Claims,
Counterclaims: form.Counterclaims,
// TODO: Add created by
Created_by: form.Created_by,
}
err := d.db.Insert(ctx, UserClaimsTable, &uc)

View file

@ -51,7 +51,8 @@ func (database *Database) createTables(ctx context.Context) {
id BIGSERIAL PRIMARY KEY,
system TEXT,
barcode TEXT,
created_at TIMESTAMPTZ
created_at TIMESTAMPTZ,
UNIQUE (system, barcode)
);
`)
if err != nil {

View file

@ -9,10 +9,26 @@ import (
"github.com/vingarcia/ksql"
)
func (d *Database) FindOrCreateProduct(system string, barcode string) (*Product, error) {
product, err := d.FindProductByBarcode(system, barcode)
if err != nil {
return nil, err
}
// If the product doesn't exist yet, create it
if product == nil {
product, err = d.CreateProduct(system, barcode)
if err != nil {
return nil, err
}
}
return product, nil
}
// FindProductByBarcode will return nil with no error if the product doesn't exist.
func (d *Database) FindProductByBarcode(system string, barcode string) (*Product, error) {
ctx := context.Background()
ctx = ksql.InjectLogger(ctx, ksql.Logger)
var product Product
err := d.db.QueryOne(ctx, &product, "FROM products WHERE system = $1 AND barcode = $2", system, barcode)
@ -27,7 +43,7 @@ func (d *Database) FindProductByBarcode(system string, barcode string) (*Product
return &product, nil
}
// Doesnt handle checking if product exists.
// CreateProduct simply makes an entry in the products table. Prefer FindOrCreateProduct
func (d *Database) CreateProduct(system string, barcode string) (*Product, error) {
ctx := context.Background()
var product = Product{
@ -36,7 +52,7 @@ func (d *Database) CreateProduct(system string, barcode string) (*Product, error
Created_at: time.Now(),
}
log.Debugf("made new product: %v", product)
log.Debugf("successfully created new product: %v", product)
if err := d.db.Insert(ctx, ProductsTable, &product); err != nil {
return nil, fmt.Errorf("failed to insert new product: %w", err)