package search import ( "context" "fmt" "log" "tercul/internal/domain/work" "time" "github.com/weaviate/weaviate-go-client/v5/weaviate" ) var Client *weaviate.Client // UpsertWork inserts or updates a Work object in Weaviate func UpsertWork(client *weaviate.Client, work work.Work) error { // Create a properties map with the fields that exist in the Work model properties := map[string]interface{}{ "language": work.Language, "title": work.Title, "description": work.Description, "status": work.Status, // Add timestamps "createdAt": work.CreatedAt.Format(time.RFC3339), "updatedAt": work.UpdatedAt.Format(time.RFC3339), } _, err := client.Data().Creator(). WithClassName("Work"). WithID(fmt.Sprintf("%d", work.ID)). // Use the ID from the Work model WithProperties(properties). Do(context.Background()) if err != nil { log.Printf("Weaviate Upsert Error for Work ID %d: %v", work.ID, err) } return err }