75 lines
2.5 KiB
Go
75 lines
2.5 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
|
|
"rag-local/kb/consts"
|
|
"rag-local/kb/model/entity"
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|
)
|
|
|
|
var CaseEvidence = &caseEvidenceDao{}
|
|
|
|
type caseEvidenceDao struct{}
|
|
|
|
func init() {
|
|
ctx := context.Background()
|
|
_, err := g.DB(consts.DbGroupDefault).Exec(ctx, `CREATE TABLE IF NOT EXISTS `+consts.TableNameCaseEvidence+` (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
case_id INTEGER NOT NULL,
|
|
evidence_id INTEGER NOT NULL,
|
|
created_at DATETIME DEFAULT (datetime('now','localtime')),
|
|
UNIQUE(case_id, evidence_id)
|
|
)`)
|
|
if err != nil {
|
|
g.Log().Warningf(ctx, "create kb_case_evidence table failed: %v", err)
|
|
}
|
|
if _, err := g.DB(consts.DbGroupDefault).Exec(ctx, "CREATE INDEX IF NOT EXISTS idx_kb_case_evidence_case_id ON "+consts.TableNameCaseEvidence+"(case_id)"); err != nil {
|
|
g.Log().Warningf(ctx, "create index idx_kb_case_evidence_case_id failed: %v", err)
|
|
}
|
|
if _, err := g.DB(consts.DbGroupDefault).Exec(ctx, "CREATE INDEX IF NOT EXISTS idx_kb_case_evidence_evidence_id ON "+consts.TableNameCaseEvidence+"(evidence_id)"); err != nil {
|
|
g.Log().Warningf(ctx, "create index idx_kb_case_evidence_evidence_id failed: %v", err)
|
|
}
|
|
}
|
|
|
|
func (d *caseEvidenceDao) InsertAll(ctx context.Context, caseId int64, evidenceIds []int64) error {
|
|
if len(evidenceIds) == 0 {
|
|
return nil
|
|
}
|
|
now := gtime.Now().Format("Y-m-d H:i:s")
|
|
for _, eid := range evidenceIds {
|
|
_, err := g.DB(consts.DbGroupDefault).Model(consts.TableNameCaseEvidence).Ctx(ctx).Data(g.Map{
|
|
"case_id": caseId,
|
|
"evidence_id": eid,
|
|
"created_at": now,
|
|
}).Insert()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *caseEvidenceDao) DeleteByCaseId(ctx context.Context, caseId int64) error {
|
|
_, err := g.DB(consts.DbGroupDefault).Model(consts.TableNameCaseEvidence).Ctx(ctx).Where("case_id", caseId).Delete()
|
|
return err
|
|
}
|
|
|
|
func (d *caseEvidenceDao) DeleteByCaseAndEvidence(ctx context.Context, caseId, evidenceId int64) error {
|
|
_, err := g.DB(consts.DbGroupDefault).Model(consts.TableNameCaseEvidence).Ctx(ctx).
|
|
Where("case_id", caseId).Where("evidence_id", evidenceId).Delete()
|
|
return err
|
|
}
|
|
|
|
func (d *caseEvidenceDao) ListByCaseId(ctx context.Context, caseId int64) ([]*entity.CaseEvidence, error) {
|
|
var list []*entity.CaseEvidence
|
|
err := g.DB(consts.DbGroupDefault).Model(consts.TableNameCaseEvidence).Ctx(ctx).
|
|
Where("case_id", caseId).OrderDesc("id").Scan(&list)
|
|
if list == nil {
|
|
list = make([]*entity.CaseEvidence, 0)
|
|
}
|
|
return list, err
|
|
}
|