| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package dao
-
- import (
- "context"
- "fmt"
-
- "git.x2erp.com/qdy/go-svc-configure/internal/tables"
- "github.com/jmoiron/sqlx"
- )
-
- // CreateProject 创建项目
- func CreateProject(ctx context.Context, tx *sqlx.Tx, projectID, description, mcpURL, creator string) (int64, error) {
- id := fmt.Sprintf("project.%s", projectID)
-
- query := `
- INSERT INTO config_project
- (id, project_id, description, mcp_url, creator, created_at)
- VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
- `
-
- result, err := tx.ExecContext(ctx, query, id, projectID, description, mcpURL, creator)
- if err != nil {
- return -1, fmt.Errorf("创建项目失败: %v", err)
- }
-
- return ValidateResultRowsAffected(result, err, 1)
- }
-
- // GetProjectByProjectID 根据项目ID查询项目
- func GetProjectByProjectID(ctx context.Context, db *sqlx.DB, projectID string) (*tables.ProjectDB, error) {
- var project tables.ProjectDB
-
- query := `
- SELECT id, project_id, description, mcp_url, creator, created_at
- FROM config_project
- WHERE project_id = ?
- `
-
- err := db.GetContext(ctx, &project, query, projectID)
- if err != nil {
- return nil, fmt.Errorf("查询项目失败: %v", err)
- }
-
- return &project, nil
- }
-
- // ListProjects 查询项目列表
- func ListProjects(ctx context.Context, db *sqlx.DB) ([]tables.ProjectDB, error) {
- var projects []tables.ProjectDB
-
- query := `
- SELECT id, project_id, description, mcp_url, creator, created_at
- FROM config_project
- ORDER BY created_at DESC
- `
-
- err := db.SelectContext(ctx, &projects, query)
- if err != nil {
- return nil, fmt.Errorf("查询项目列表失败: %v", err)
- }
-
- return projects, nil
- }
-
- // UpdateProject 更新项目信息
- func UpdateProject(ctx context.Context, tx *sqlx.Tx, projectID, description, mcpURL string) (int64, error) {
- query := `
- UPDATE config_project
- SET description = ?, mcp_url = ?
- WHERE project_id = ?
- `
-
- result, err := tx.ExecContext(ctx, query, description, mcpURL, projectID)
- if err != nil {
- return -1, fmt.Errorf("更新项目失败: %v", err)
- }
-
- return ValidateResultRowsAffected(result, err, 1)
- }
-
- // DeleteProject 删除项目
- func DeleteProject(ctx context.Context, tx *sqlx.Tx, projectID string) (int64, error) {
- query := `DELETE FROM config_project WHERE project_id = ?`
-
- result, err := tx.ExecContext(ctx, query, projectID)
- if err != nil {
- return -1, fmt.Errorf("删除项目失败: %v", err)
- }
-
- return ValidateResultRowsAffected(result, err, 1)
- }
-
- // CheckProjectExists 检查项目是否存在
- func CheckProjectExists(ctx context.Context, db *sqlx.DB, projectID string) (bool, error) {
- var count int
- query := `SELECT COUNT(*) FROM config_project WHERE project_id = ?`
-
- err := db.GetContext(ctx, &count, query, projectID)
- if err != nil {
- return false, fmt.Errorf("检查项目存在性失败: %v", err)
- }
-
- return count > 0, nil
- }
|