refactor(store): replace project and skill models with generated models
Some checks failed
CI / build-and-test (push) Failing after -31m25s
Some checks failed
CI / build-and-test (push) Failing after -31m25s
* Update project creation and retrieval to use generated models * Modify skill addition and listing to utilize generated models * Refactor thought handling to incorporate generated models * Adjust tool annotations to align with new model structure * Update API calls in the UI to use new ResolveSpec-based endpoints * Enhance stats retrieval logic to aggregate thought metadata
This commit is contained in:
@@ -5,9 +5,9 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"git.warky.dev/wdevs/amcs/internal/generatedmodels"
|
||||
"github.com/google/uuid"
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
|
||||
thoughttypes "git.warky.dev/wdevs/amcs/internal/types"
|
||||
)
|
||||
@@ -48,9 +48,13 @@ func (db *DB) CreateLearning(ctx context.Context, learning thoughttypes.Learning
|
||||
)
|
||||
|
||||
created := learning
|
||||
if err := row.Scan(&created.ID, &created.CreatedAt, &created.UpdatedAt); err != nil {
|
||||
var model generatedmodels.ModelPublicLearnings
|
||||
if err := row.Scan(&model.ID, &model.CreatedAt, &model.UpdatedAt); err != nil {
|
||||
return thoughttypes.Learning{}, fmt.Errorf("create learning: %w", err)
|
||||
}
|
||||
created.ID = model.ID.UUID()
|
||||
created.CreatedAt = model.CreatedAt.Time()
|
||||
created.UpdatedAt = model.UpdatedAt.Time()
|
||||
return created, nil
|
||||
}
|
||||
|
||||
@@ -59,7 +63,7 @@ func (db *DB) GetLearning(ctx context.Context, id uuid.UUID) (thoughttypes.Learn
|
||||
select id, summary, details, category, area, status, priority, confidence,
|
||||
action_required, source_type, source_ref, project_id, related_thought_id,
|
||||
related_skill_id, reviewed_by, reviewed_at, duplicate_of_learning_id,
|
||||
supersedes_learning_id, tags, created_at, updated_at
|
||||
supersedes_learning_id, tags::text[], created_at, updated_at
|
||||
from learnings
|
||||
where id = $1
|
||||
`, id)
|
||||
@@ -111,7 +115,7 @@ func (db *DB) ListLearnings(ctx context.Context, filter thoughttypes.LearningFil
|
||||
select id, summary, details, category, area, status, priority, confidence,
|
||||
action_required, source_type, source_ref, project_id, related_thought_id,
|
||||
related_skill_id, reviewed_by, reviewed_at, duplicate_of_learning_id,
|
||||
supersedes_learning_id, tags, created_at, updated_at
|
||||
supersedes_learning_id, tags::text[], created_at, updated_at
|
||||
from learnings
|
||||
`
|
||||
if len(conditions) > 0 {
|
||||
@@ -148,51 +152,40 @@ type learningScanner interface {
|
||||
}
|
||||
|
||||
func scanLearning(row learningScanner) (thoughttypes.Learning, error) {
|
||||
var learning thoughttypes.Learning
|
||||
var sourceType pgtype.Text
|
||||
var sourceRef pgtype.Text
|
||||
var reviewedBy pgtype.Text
|
||||
var model generatedmodels.ModelPublicLearnings
|
||||
var tags []string
|
||||
|
||||
err := row.Scan(
|
||||
&learning.ID,
|
||||
&learning.Summary,
|
||||
&learning.Details,
|
||||
&learning.Category,
|
||||
&learning.Area,
|
||||
&learning.Status,
|
||||
&learning.Priority,
|
||||
&learning.Confidence,
|
||||
&learning.ActionRequired,
|
||||
&sourceType,
|
||||
&sourceRef,
|
||||
&learning.ProjectID,
|
||||
&learning.RelatedThoughtID,
|
||||
&learning.RelatedSkillID,
|
||||
&reviewedBy,
|
||||
&learning.ReviewedAt,
|
||||
&learning.DuplicateOfLearningID,
|
||||
&learning.SupersedesLearningID,
|
||||
&model.ID,
|
||||
&model.Summary,
|
||||
&model.Details,
|
||||
&model.Category,
|
||||
&model.Area,
|
||||
&model.Status,
|
||||
&model.Priority,
|
||||
&model.Confidence,
|
||||
&model.ActionRequired,
|
||||
&model.SourceType,
|
||||
&model.SourceRef,
|
||||
&model.ProjectID,
|
||||
&model.RelatedThoughtID,
|
||||
&model.RelatedSkillID,
|
||||
&model.ReviewedBy,
|
||||
&model.ReviewedAt,
|
||||
&model.DuplicateOfLearningID,
|
||||
&model.SupersedesLearningID,
|
||||
&tags,
|
||||
&learning.CreatedAt,
|
||||
&learning.UpdatedAt,
|
||||
&model.CreatedAt,
|
||||
&model.UpdatedAt,
|
||||
)
|
||||
if err != nil {
|
||||
return thoughttypes.Learning{}, err
|
||||
}
|
||||
|
||||
learning.SourceType = sourceType.String
|
||||
learning.SourceRef = sourceRef.String
|
||||
if reviewedBy.Valid {
|
||||
value := reviewedBy.String
|
||||
learning.ReviewedBy = &value
|
||||
}
|
||||
if tags == nil {
|
||||
learning.Tags = []string{}
|
||||
} else {
|
||||
learning.Tags = tags
|
||||
tags = []string{}
|
||||
}
|
||||
return learning, nil
|
||||
return learningFromModel(model, tags), nil
|
||||
}
|
||||
|
||||
func nullableText(value string) *string {
|
||||
|
||||
Reference in New Issue
Block a user