mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
feat: subagent table structure and crud apis
This commit is contained in:
@@ -105,6 +105,20 @@ type Snapshot struct {
|
||||
CreatedAt pgtype.Timestamptz `json:"created_at"`
|
||||
}
|
||||
|
||||
type Subagent struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
CreatedAt pgtype.Timestamptz `json:"created_at"`
|
||||
UpdatedAt pgtype.Timestamptz `json:"updated_at"`
|
||||
Deleted bool `json:"deleted"`
|
||||
DeletedAt pgtype.Timestamptz `json:"deleted_at"`
|
||||
UserID pgtype.UUID `json:"user_id"`
|
||||
Messages []byte `json:"messages"`
|
||||
Metadata []byte `json:"metadata"`
|
||||
Skills []byte `json:"skills"`
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
Username string `json:"username"`
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.30.0
|
||||
// source: subagents.sql
|
||||
|
||||
package sqlc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
const createSubagent = `-- name: CreateSubagent :one
|
||||
INSERT INTO subagents (name, description, user_id, messages, metadata, skills)
|
||||
VALUES ($1, $2, $3, $4, $5, $6)
|
||||
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, user_id, messages, metadata, skills
|
||||
`
|
||||
|
||||
type CreateSubagentParams struct {
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
UserID pgtype.UUID `json:"user_id"`
|
||||
Messages []byte `json:"messages"`
|
||||
Metadata []byte `json:"metadata"`
|
||||
Skills []byte `json:"skills"`
|
||||
}
|
||||
|
||||
func (q *Queries) CreateSubagent(ctx context.Context, arg CreateSubagentParams) (Subagent, error) {
|
||||
row := q.db.QueryRow(ctx, createSubagent,
|
||||
arg.Name,
|
||||
arg.Description,
|
||||
arg.UserID,
|
||||
arg.Messages,
|
||||
arg.Metadata,
|
||||
arg.Skills,
|
||||
)
|
||||
var i Subagent
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.Description,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Deleted,
|
||||
&i.DeletedAt,
|
||||
&i.UserID,
|
||||
&i.Messages,
|
||||
&i.Metadata,
|
||||
&i.Skills,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getSubagentByID = `-- name: GetSubagentByID :one
|
||||
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, user_id, messages, metadata, skills
|
||||
FROM subagents
|
||||
WHERE id = $1 AND deleted = false
|
||||
`
|
||||
|
||||
func (q *Queries) GetSubagentByID(ctx context.Context, id pgtype.UUID) (Subagent, error) {
|
||||
row := q.db.QueryRow(ctx, getSubagentByID, id)
|
||||
var i Subagent
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.Description,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Deleted,
|
||||
&i.DeletedAt,
|
||||
&i.UserID,
|
||||
&i.Messages,
|
||||
&i.Metadata,
|
||||
&i.Skills,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const listSubagentsByUser = `-- name: ListSubagentsByUser :many
|
||||
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, user_id, messages, metadata, skills
|
||||
FROM subagents
|
||||
WHERE user_id = $1 AND deleted = false
|
||||
ORDER BY created_at DESC
|
||||
`
|
||||
|
||||
func (q *Queries) ListSubagentsByUser(ctx context.Context, userID pgtype.UUID) ([]Subagent, error) {
|
||||
rows, err := q.db.Query(ctx, listSubagentsByUser, userID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []Subagent
|
||||
for rows.Next() {
|
||||
var i Subagent
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.Description,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Deleted,
|
||||
&i.DeletedAt,
|
||||
&i.UserID,
|
||||
&i.Messages,
|
||||
&i.Metadata,
|
||||
&i.Skills,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const softDeleteSubagent = `-- name: SoftDeleteSubagent :exec
|
||||
UPDATE subagents
|
||||
SET deleted = true,
|
||||
deleted_at = now(),
|
||||
updated_at = now()
|
||||
WHERE id = $1 AND deleted = false
|
||||
`
|
||||
|
||||
func (q *Queries) SoftDeleteSubagent(ctx context.Context, id pgtype.UUID) error {
|
||||
_, err := q.db.Exec(ctx, softDeleteSubagent, id)
|
||||
return err
|
||||
}
|
||||
|
||||
const updateSubagent = `-- name: UpdateSubagent :one
|
||||
UPDATE subagents
|
||||
SET name = $2,
|
||||
description = $3,
|
||||
metadata = $4,
|
||||
updated_at = now()
|
||||
WHERE id = $1 AND deleted = false
|
||||
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, user_id, messages, metadata, skills
|
||||
`
|
||||
|
||||
type UpdateSubagentParams struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
Metadata []byte `json:"metadata"`
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateSubagent(ctx context.Context, arg UpdateSubagentParams) (Subagent, error) {
|
||||
row := q.db.QueryRow(ctx, updateSubagent,
|
||||
arg.ID,
|
||||
arg.Name,
|
||||
arg.Description,
|
||||
arg.Metadata,
|
||||
)
|
||||
var i Subagent
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.Description,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Deleted,
|
||||
&i.DeletedAt,
|
||||
&i.UserID,
|
||||
&i.Messages,
|
||||
&i.Metadata,
|
||||
&i.Skills,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const updateSubagentMessages = `-- name: UpdateSubagentMessages :one
|
||||
UPDATE subagents
|
||||
SET messages = $2,
|
||||
updated_at = now()
|
||||
WHERE id = $1 AND deleted = false
|
||||
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, user_id, messages, metadata, skills
|
||||
`
|
||||
|
||||
type UpdateSubagentMessagesParams struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
Messages []byte `json:"messages"`
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateSubagentMessages(ctx context.Context, arg UpdateSubagentMessagesParams) (Subagent, error) {
|
||||
row := q.db.QueryRow(ctx, updateSubagentMessages, arg.ID, arg.Messages)
|
||||
var i Subagent
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.Description,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Deleted,
|
||||
&i.DeletedAt,
|
||||
&i.UserID,
|
||||
&i.Messages,
|
||||
&i.Metadata,
|
||||
&i.Skills,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const updateSubagentSkills = `-- name: UpdateSubagentSkills :one
|
||||
UPDATE subagents
|
||||
SET skills = $2,
|
||||
updated_at = now()
|
||||
WHERE id = $1 AND deleted = false
|
||||
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, user_id, messages, metadata, skills
|
||||
`
|
||||
|
||||
type UpdateSubagentSkillsParams struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
Skills []byte `json:"skills"`
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateSubagentSkills(ctx context.Context, arg UpdateSubagentSkillsParams) (Subagent, error) {
|
||||
row := q.db.QueryRow(ctx, updateSubagentSkills, arg.ID, arg.Skills)
|
||||
var i Subagent
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.Description,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Deleted,
|
||||
&i.DeletedAt,
|
||||
&i.UserID,
|
||||
&i.Messages,
|
||||
&i.Metadata,
|
||||
&i.Skills,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
Reference in New Issue
Block a user