add create product endpoint

This commit is contained in:
katefort 2025-04-21 19:13:58 -05:00
parent 43c183c29a
commit 561b8841fc
7 changed files with 104 additions and 23 deletions

View file

@ -5,10 +5,10 @@ import (
"vegan-barcode/internal/models"
)
func (database *Database) FindClaimsByProductID(product_id int) (claims []models.Claim, err error) {
func (d *Database) FindClaimsByProductID(product_id int) (claims []models.Claim, err error) {
ctx := context.Background()
err = database.db.Query(ctx, claims, `
err = d.db.Query(ctx, claims, `
SELECT
cluster,
id,
@ -55,3 +55,21 @@ func (database *Database) FindClaimsByProductID(product_id int) (claims []models
}
return
}
func (d *Database) CreateUserClaim(id int, form models.UserClaimForm) (*UserClaim, error) {
ctx := context.Background()
var uc = UserClaim{
Id: id,
Evidence_type: form.Evidence_type,
Evidence: form.Evidence,
Claims: form.Claims,
Counterclaims: form.Counterclaims,
}
err := d.db.Insert(ctx, UserClaimsTable, uc)
if err != nil {
return nil, err
}
return &uc, nil
}

View file

@ -63,8 +63,8 @@ func (database *Database) createTables(ctx context.Context) {
product_id INTEGER,
evidence_type INTEGER,
evidence JSONB,
claim INTEGER,
counter_claim INTEGER,
claims INTEGER[],
counterclaims INTEGER[],
created_at TIMESTAMPTZ,
created_by TEXT,
@ -82,8 +82,8 @@ func (database *Database) createTables(ctx context.Context) {
product_id INTEGER,
worker_type INTEGER,
evidence JSONB,
claim INTEGER,
counter_claim INTEGER,
claims INTEGER[],
counterclaims INTEGER[],
created_at TIMESTAMPTZ,
CONSTRAINT fk_product_id FOREIGN KEY(product_id) REFERENCES products(id)

View file

@ -13,22 +13,22 @@ type Product struct {
}
type AutomatedClaim struct {
id int `ksql:"id"`
product_id int `ksql:"product_id"`
worker_type models.WorkerType `ksql:"worker_type"`
evidence struct{} `ksql:"evidence,json"`
claim models.ClaimType `ksql:"claim"`
counter_claim models.ClaimType `ksql:"counter_claim"`
created_at time.Time `ksql:"created_at,timeNowUTC"`
Id int `ksql:"id"`
Product_id int `ksql:"product_id"`
Worker_type models.WorkerType `ksql:"worker_type"`
Evidence struct{} `ksql:"evidence,json"`
Claims []models.ClaimType `ksql:"claims"`
Counterclaims []models.ClaimType `ksql:"counterclaims"`
Created_at time.Time `ksql:"created_at,timeNowUTC"`
}
type UserClaim struct {
id int `ksql:"id"`
product_id int `ksql:"product_id"`
evidence_type models.EvidenceType `ksql:"evidence_type"`
evidence struct{} `ksql:"evidence,json"`
claim models.ClaimType `ksql:"claim"`
counter_claim models.ClaimType `ksql:"counter_claim"`
created_at time.Time `ksql:"created_at,timeNowUTC"`
created_by string `ksql:"created_by"`
Id int `ksql:"id"`
Product_id int `ksql:"product_id"`
Evidence_type models.EvidenceType `ksql:"evidence_type"`
Evidence struct{} `ksql:"evidence,json"`
Claims []models.ClaimType `ksql:"claims"`
Counterclaims []models.ClaimType `ksql:"counterclaims"`
Created_at time.Time `ksql:"created_at,timeNowUTC"`
Created_by string `ksql:"created_by"`
}

View file

@ -1,14 +1,37 @@
package database
import "context"
import (
"context"
"time"
"github.com/vingarcia/ksql"
)
func (d *Database) FindProductIDByBarcode(system string, barcode string) (id int, err error) {
ctx := context.Background()
err = d.db.QueryOne(ctx, &id, "SELECT id FROM products WHERE system = ? AND barcode = ?", system, barcode)
if err == ksql.ErrRecordNotFound {
return -1, nil
}
if err != nil {
return -1, err
}
return
}
func (d *Database) CreateProduct(system string, barcode string) (*Product, error) {
ctx := context.Background()
var product = Product{
System: system,
Barcode: barcode,
Created_at: time.Now(),
}
if err := d.db.Insert(ctx, ProductsTable, &product); err != nil {
return nil, err
}
return &product, nil
}