diff --git a/internal/database/claims.go b/internal/database/claims.go index 2d40478..8578160 100644 --- a/internal/database/claims.go +++ b/internal/database/claims.go @@ -71,17 +71,17 @@ func (database *Database) FindUserClaimById(claim_id int) (*UserClaim, error) { return &claim, err } -func (d *Database) CreateUserClaim(id int, form models.UserClaimForm) (*UserClaim, error) { +func (d *Database) CreateUserClaim(product_id int, form models.UserClaimForm) (*UserClaim, error) { ctx := context.Background() var uc = UserClaim{ - Id: id, + Product_id: product_id, Evidence_type: form.Evidence_type, Evidence: form.Evidence, Claims: form.Claims, Counterclaims: form.Counterclaims, } - err := d.db.Insert(ctx, UserClaimsTable, uc) + err := d.db.Insert(ctx, UserClaimsTable, &uc) if err != nil { return nil, err } diff --git a/internal/database/claims_test.go b/internal/database/claims_test.go new file mode 100644 index 0000000..8fcc192 --- /dev/null +++ b/internal/database/claims_test.go @@ -0,0 +1,41 @@ +package database + +import ( + "testing" + "vegan-barcode/internal/models" +) + +func TestCreateClaimByProductId(t *testing.T) { + database := InitializeDatabase() + + product, _ := database.CreateProduct("upc", "1234567890") + + form := models.UserClaimForm{ + Evidence_type: models.IngredientsList, + Evidence: models.IngredientsListEvidence{ + Ingredients: "flour,egg,milk,water,salt,butter", + }, + Claims: []models.ClaimType{ + models.ContainsEggs, + models.ContainsMilk, + }, + Counterclaims: []models.ClaimType{ + models.ContainsMeat, + models.ContainsFish, + models.ContainsHoney, + }, + Created_by: "1", + } + + claim, err := database.CreateUserClaim(product.Id, form) + + if err != nil { + t.Errorf("Got error while creating user claim %v", err) + } + + foundClaim, _ := database.FindUserClaimById(claim.Id) + + if foundClaim == nil { + t.Errorf("Could not find created claim %d", claim.Id) + } +} diff --git a/internal/database/models.go b/internal/database/models.go index e5cdc0a..d93dc5c 100644 --- a/internal/database/models.go +++ b/internal/database/models.go @@ -16,7 +16,7 @@ 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"` + Evidence interface{} `ksql:"evidence,json"` Claims []models.ClaimType `ksql:"claims"` Counterclaims []models.ClaimType `ksql:"counterclaims"` Created_at time.Time `ksql:"created_at,timeNowUTC"` @@ -26,7 +26,7 @@ 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"` + Evidence interface{} `ksql:"evidence,json"` Claims []models.ClaimType `ksql:"claims"` Counterclaims []models.ClaimType `ksql:"counterclaims"` Created_at time.Time `ksql:"created_at,timeNowUTC"` diff --git a/internal/models/models.go b/internal/models/models.go index 79eb1e1..b6efda3 100644 --- a/internal/models/models.go +++ b/internal/models/models.go @@ -35,6 +35,10 @@ const ( IngredientsList ) +type IngredientsListEvidence struct { + Ingredients string +} + type ClusterType int const ( @@ -62,7 +66,7 @@ type ProductClaims struct { type UserClaimForm struct { Evidence_type EvidenceType - Evidence struct{} + Evidence interface{} Claims []ClaimType Counterclaims []ClaimType Created_by string