暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

project_skill_dao.go 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package dao
  2. import (
  3. "context"
  4. "fmt"
  5. "git.x2erp.com/qdy/go-svc-configure/internal/tables"
  6. "github.com/jmoiron/sqlx"
  7. )
  8. // CreateProjectSkill 创建项目Skill
  9. func CreateProjectSkill(ctx context.Context, tx *sqlx.Tx, skillID, projectID, description, content, creator string) (int64, error) {
  10. id := fmt.Sprintf("project_skill.%s", skillID)
  11. query := `
  12. INSERT INTO config_project_skill
  13. (id, skill_id, project_id, description, content, creator, created_at)
  14. VALUES (?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
  15. `
  16. result, err := tx.ExecContext(ctx, query, id, skillID, projectID, description, content, creator)
  17. if err != nil {
  18. return -1, fmt.Errorf("创建项目Skill失败: %v", err)
  19. }
  20. return ValidateResultRowsAffected(result, err, 1)
  21. }
  22. // GetProjectSkillBySkillID 根据SkillID查询项目Skill
  23. func GetProjectSkillBySkillID(ctx context.Context, db *sqlx.DB, skillID string) (*tables.ProjectSkillDB, error) {
  24. var projectSkill tables.ProjectSkillDB
  25. query := `
  26. SELECT id, skill_id, project_id, description, content, creator, created_at
  27. FROM config_project_skill
  28. WHERE skill_id = ?
  29. `
  30. err := db.GetContext(ctx, &projectSkill, query, skillID)
  31. if err != nil {
  32. return nil, fmt.Errorf("查询项目Skill失败: %v", err)
  33. }
  34. return &projectSkill, nil
  35. }
  36. // ListProjectSkills 查询项目Skill列表
  37. func ListProjectSkills(ctx context.Context, db *sqlx.DB) ([]tables.ProjectSkillDB, error) {
  38. var projectSkills []tables.ProjectSkillDB
  39. query := `
  40. SELECT id, skill_id, project_id, description, content, creator, created_at
  41. FROM config_project_skill
  42. ORDER BY created_at DESC
  43. `
  44. err := db.SelectContext(ctx, &projectSkills, query)
  45. if err != nil {
  46. return nil, fmt.Errorf("查询项目Skill列表失败: %v", err)
  47. }
  48. return projectSkills, nil
  49. }
  50. // UpdateProjectSkill 更新项目Skill信息
  51. func UpdateProjectSkill(ctx context.Context, tx *sqlx.Tx, skillID, projectID, description, content string) (int64, error) {
  52. query := `
  53. UPDATE config_project_skill
  54. SET project_id = ?, description = ?, content = ?
  55. WHERE skill_id = ?
  56. `
  57. result, err := tx.ExecContext(ctx, query, projectID, description, content, skillID)
  58. if err != nil {
  59. return -1, fmt.Errorf("更新项目Skill失败: %v", err)
  60. }
  61. return ValidateResultRowsAffected(result, err, 1)
  62. }
  63. // DeleteProjectSkill 删除项目Skill
  64. func DeleteProjectSkill(ctx context.Context, tx *sqlx.Tx, skillID string) (int64, error) {
  65. query := `DELETE FROM config_project_skill WHERE skill_id = ?`
  66. result, err := tx.ExecContext(ctx, query, skillID)
  67. if err != nil {
  68. return -1, fmt.Errorf("删除项目Skill失败: %v", err)
  69. }
  70. return ValidateResultRowsAffected(result, err, 1)
  71. }
  72. // CheckProjectSkillExists 检查项目Skill是否存在
  73. func CheckProjectSkillExists(ctx context.Context, db *sqlx.DB, skillID string) (bool, error) {
  74. var count int
  75. query := `SELECT COUNT(*) FROM config_project_skill WHERE skill_id = ?`
  76. err := db.GetContext(ctx, &count, query, skillID)
  77. if err != nil {
  78. return false, fmt.Errorf("检查项目Skill存在性失败: %v", err)
  79. }
  80. return count > 0, nil
  81. }
  82. // DeleteProjectSkillsByProjectID 根据项目ID删除所有关联的Skill
  83. func DeleteProjectSkillsByProjectID(ctx context.Context, tx *sqlx.Tx, projectID string) (int64, error) {
  84. query := `DELETE FROM config_project_skill WHERE project_id = ?`
  85. result, err := tx.ExecContext(ctx, query, projectID)
  86. if err != nil {
  87. return -1, fmt.Errorf("删除项目关联Skill失败: %v", err)
  88. }
  89. rowsAffected, _ := result.RowsAffected()
  90. return rowsAffected, nil
  91. }