feat: manually mirror opencoze's code from bytedance

Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
fanlv
2025-07-20 17:36:12 +08:00
commit 890153324f
14811 changed files with 1923430 additions and 0 deletions

View File

@@ -0,0 +1,180 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dao
import (
"context"
"errors"
"time"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
)
type KnowledgeDAO struct {
DB *gorm.DB
Query *query.Query
}
func (dao *KnowledgeDAO) Create(ctx context.Context, knowledge *model.Knowledge) error {
return dao.Query.Knowledge.WithContext(ctx).Create(knowledge)
}
func (dao *KnowledgeDAO) Upsert(ctx context.Context, knowledge *model.Knowledge) error {
return dao.Query.Knowledge.WithContext(ctx).Clauses(clause.OnConflict{UpdateAll: true}).Create(knowledge)
}
func (dao *KnowledgeDAO) Update(ctx context.Context, knowledge *model.Knowledge) error {
k := dao.Query.Knowledge
knowledge.UpdatedAt = time.Now().UnixMilli()
err := k.WithContext(ctx).Where(k.ID.Eq(knowledge.ID)).Save(knowledge)
return err
}
func (dao *KnowledgeDAO) Delete(ctx context.Context, id int64) error {
k := dao.Query.Knowledge
_, err := k.WithContext(ctx).Where(k.ID.Eq(id)).Delete()
return err
}
func (dao *KnowledgeDAO) MGetByID(ctx context.Context, ids []int64) ([]*model.Knowledge, error) {
if len(ids) == 0 {
return nil, nil
}
k := dao.Query.Knowledge
pos, err := k.WithContext(ctx).Where(k.ID.In(ids...)).Find()
if err != nil {
return nil, err
}
return pos, nil
}
func (dao *KnowledgeDAO) FilterEnableKnowledge(ctx context.Context, knowledgeIDs []int64) ([]*model.Knowledge, error) {
if len(knowledgeIDs) == 0 {
return nil, nil
}
k := dao.Query.Knowledge
knowledgeModels, err := k.WithContext(ctx).
Select(k.ID, k.FormatType).
Where(k.ID.In(knowledgeIDs...)).
Where(k.Status.Eq(int32(entity.DocumentStatusEnable))).
Find()
return knowledgeModels, err
}
func (dao *KnowledgeDAO) InitTx() (tx *gorm.DB, err error) {
tx = dao.DB.Begin()
if tx.Error != nil {
return nil, err
}
return
}
func (dao *KnowledgeDAO) UpdateWithTx(ctx context.Context, tx *gorm.DB, knowledgeID int64, updateMap map[string]interface{}) error {
return tx.WithContext(ctx).Model(&model.Knowledge{}).Where("id = ?", knowledgeID).Updates(updateMap).Error
}
func (dao *KnowledgeDAO) FindKnowledgeByCondition(ctx context.Context, opts *entity.WhereKnowledgeOption) (knowledge []*model.Knowledge, total int64, err error) {
k := dao.Query.Knowledge
do := k.WithContext(ctx).Debug()
if opts == nil {
return nil, 0, nil
}
if opts.Query != nil && len(*opts.Query) > 0 {
do = do.Where(k.Name.Like("%" + *opts.Query + "%"))
}
if opts.Name != nil && len(*opts.Name) > 0 {
do = do.Where(k.Name.Eq(*opts.Name))
}
if len(opts.KnowledgeIDs) > 0 {
do = do.Where(k.ID.In(opts.KnowledgeIDs...))
}
if ptr.From(opts.AppID) != 0 {
do = do.Where(k.AppID.Eq(ptr.From(opts.AppID)))
} else {
if len(opts.KnowledgeIDs) == 0 {
do = do.Where(k.AppID.Eq(0))
}
}
if ptr.From(opts.SpaceID) != 0 {
do = do.Where(k.SpaceID.Eq(*opts.SpaceID))
}
if len(opts.Status) > 0 {
do = do.Where(k.Status.In(opts.Status...))
}
if opts.UserID != nil && ptr.From(opts.UserID) != 0 {
do = do.Where(k.CreatorID.Eq(*opts.UserID))
}
if opts.FormatType != nil {
do = do.Where(k.FormatType.Eq(int32(*opts.FormatType)))
}
if opts.Order != nil {
if *opts.Order == entity.OrderCreatedAt {
if opts.OrderType != nil {
if *opts.OrderType == entity.OrderTypeAsc {
do = do.Order(k.CreatedAt.Asc())
} else {
do = do.Order(k.CreatedAt.Desc())
}
} else {
do = do.Order(k.CreatedAt.Desc())
}
} else if *opts.Order == entity.OrderUpdatedAt {
if opts.OrderType != nil {
if *opts.OrderType == entity.OrderTypeAsc {
do = do.Order(k.UpdatedAt.Asc())
} else {
do = do.Order(k.UpdatedAt.Desc())
}
} else {
do = do.Order(k.UpdatedAt.Desc())
}
}
}
if opts.Page != nil && opts.PageSize != nil {
offset := (*opts.Page - 1) * (*opts.PageSize)
do = do.Limit(*opts.PageSize).Offset(offset)
}
knowledge, err = do.Find()
if err != nil {
return nil, 0, err
}
total, err = do.Limit(-1).Offset(-1).Count()
if err != nil {
return nil, 0, err
}
return knowledge, total, err
}
func (dao *KnowledgeDAO) GetByID(ctx context.Context, id int64) (*model.Knowledge, error) {
k := dao.Query.Knowledge
knowledge, err := k.WithContext(ctx).Where(k.ID.Eq(id)).First()
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, err
}
return knowledge, nil
}

View File

@@ -0,0 +1,197 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dao
import (
"context"
"errors"
"strconv"
"time"
"gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
)
type KnowledgeDocumentDAO struct {
DB *gorm.DB
Query *query.Query
}
func (dao *KnowledgeDocumentDAO) Create(ctx context.Context, document *model.KnowledgeDocument) error {
return dao.Query.KnowledgeDocument.WithContext(ctx).Create(document)
}
func (dao *KnowledgeDocumentDAO) Update(ctx context.Context, document *model.KnowledgeDocument) error {
document.UpdatedAt = time.Now().UnixMilli()
err := dao.Query.KnowledgeDocument.WithContext(ctx).Save(document)
return err
}
func (dao *KnowledgeDocumentDAO) Delete(ctx context.Context, id int64) error {
k := dao.Query.KnowledgeDocument
_, err := k.WithContext(ctx).Where(k.ID.Eq(id)).Delete()
return err
}
func (dao *KnowledgeDocumentDAO) MGetByID(ctx context.Context, ids []int64) ([]*model.KnowledgeDocument, error) {
if len(ids) == 0 {
return nil, nil
}
k := dao.Query.KnowledgeDocument
pos, err := k.WithContext(ctx).Where(k.ID.In(ids...)).Find()
if err != nil {
return nil, err
}
return pos, err
}
func (dao *KnowledgeDocumentDAO) fromCursor(cursor string) (id int64, err error) {
id, err = strconv.ParseInt(cursor, 10, 64)
return
}
func (dao *KnowledgeDocumentDAO) FindDocumentByCondition(ctx context.Context, opts *entity.WhereDocumentOpt) ([]*model.KnowledgeDocument, int64, error) {
k := dao.Query.KnowledgeDocument
do := k.WithContext(ctx)
if opts == nil {
return nil, 0, nil
}
if len(opts.IDs) == 0 && len(opts.KnowledgeIDs) == 0 {
return nil, 0, errors.New("need ids or knowledge_ids")
}
if opts.CreatorID > 0 {
do = do.Where(k.CreatorID.Eq(opts.CreatorID))
}
if len(opts.IDs) > 0 {
do = do.Where(k.ID.In(opts.IDs...))
}
if len(opts.KnowledgeIDs) > 0 {
do = do.Where(k.KnowledgeID.In(opts.KnowledgeIDs...))
}
if len(opts.StatusIn) > 0 {
do = do.Where(k.Status.In(opts.StatusIn...))
}
if len(opts.StatusNotIn) > 0 {
do = do.Where(k.Status.NotIn(opts.StatusNotIn...))
}
if opts.SelectAll {
do = do.Limit(-1)
} else {
if opts.Limit != 0 {
do = do.Limit(opts.Limit)
}
if opts.Offset != nil {
do = do.Offset(ptr.From(opts.Offset))
}
}
if opts.Cursor != nil {
id, err := dao.fromCursor(ptr.From(opts.Cursor))
if err != nil {
return nil, 0, err
}
do = do.Where(k.ID.Lt(id)).Order(k.ID.Desc())
}
resp, err := do.Find()
if err != nil {
return nil, 0, err
}
total, err := do.Limit(-1).Offset(-1).Count()
if err != nil {
return nil, 0, err
}
return resp, total, nil
}
func (dao *KnowledgeDocumentDAO) DeleteDocuments(ctx context.Context, ids []int64) error {
tx := dao.DB.Begin()
var err error
defer func() {
if err != nil {
tx.Rollback()
} else {
tx.Commit()
}
}()
// 删除document
err = tx.WithContext(ctx).Model(&model.KnowledgeDocument{}).Where("id in ?", ids).Delete(&model.KnowledgeDocument{}).Error
if err != nil {
return err
}
// 删除document_slice
err = tx.WithContext(ctx).Model(&model.KnowledgeDocumentSlice{}).Where("document_id in?", ids).Delete(&model.KnowledgeDocumentSlice{}).Error
if err != nil {
return err
}
return nil
}
func (dao *KnowledgeDocumentDAO) SetStatus(ctx context.Context, documentID int64, status int32, reason string) error {
k := dao.Query.KnowledgeDocument
d := &model.KnowledgeDocument{Status: status, FailReason: reason, UpdatedAt: time.Now().UnixMilli()}
_, err := k.WithContext(ctx).Debug().Where(k.ID.Eq(documentID)).Updates(d)
return err
}
func (dao *KnowledgeDocumentDAO) CreateWithTx(ctx context.Context, tx *gorm.DB, documents []*model.KnowledgeDocument) error {
if len(documents) == 0 {
return nil
}
tx = tx.WithContext(ctx).Debug().CreateInBatches(documents, len(documents))
return tx.Error
}
func (dao *KnowledgeDocumentDAO) GetByID(ctx context.Context, id int64) (*model.KnowledgeDocument, error) {
k := dao.Query.KnowledgeDocument
document, err := k.WithContext(ctx).Where(k.ID.Eq(id)).First()
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, err
}
return document, nil
}
func (dao *KnowledgeDocumentDAO) UpdateDocumentSliceInfo(ctx context.Context, documentID int64) error {
s := dao.Query.KnowledgeDocumentSlice
var err error
var sliceCount int64
var totalSize *int64
sliceCount, err = s.WithContext(ctx).Debug().Where(s.DocumentID.Eq(documentID)).Count()
if err != nil {
return err
}
err = dao.DB.Raw("SELECT SUM(CHAR_LENGTH(content)) FROM knowledge_document_slice WHERE document_id = ? AND deleted_at IS NULL", documentID).Scan(&totalSize).Error
if err != nil {
return err
}
k := dao.Query.KnowledgeDocument
updates := map[string]any{}
updates[k.SliceCount.ColumnName().String()] = sliceCount
if totalSize != nil {
updates[k.Size.ColumnName().String()] = ptr.From(totalSize)
}
updates[k.UpdatedAt.ColumnName().String()] = time.Now().UnixMilli()
_, err = k.WithContext(ctx).Debug().Where(k.ID.Eq(documentID)).Updates(updates)
return err
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dao
import (
"context"
"gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
)
type KnowledgeDocumentReviewDAO struct {
DB *gorm.DB
Query *query.Query
}
func (dao *KnowledgeDocumentReviewDAO) CreateInBatches(ctx context.Context, reviews []*model.KnowledgeDocumentReview) error {
return dao.Query.KnowledgeDocumentReview.WithContext(ctx).Debug().CreateInBatches(reviews, len(reviews))
}
func (dao *KnowledgeDocumentReviewDAO) MGetByIDs(ctx context.Context, reviewIDs []int64) ([]*model.KnowledgeDocumentReview, error) {
return dao.Query.KnowledgeDocumentReview.WithContext(ctx).Debug().Where(dao.Query.KnowledgeDocumentReview.ID.In(reviewIDs...)).Find()
}
func (dao *KnowledgeDocumentReviewDAO) GetByID(ctx context.Context, reviewID int64) (*model.KnowledgeDocumentReview, error) {
return dao.Query.KnowledgeDocumentReview.WithContext(ctx).Debug().Where(dao.Query.KnowledgeDocumentReview.ID.Eq(reviewID)).First()
}
func (dao *KnowledgeDocumentReviewDAO) UpdateReview(ctx context.Context, reviewID int64, mp map[string]interface{}) error {
_, err := dao.Query.KnowledgeDocumentReview.WithContext(ctx).Debug().Where(dao.Query.KnowledgeDocumentReview.ID.Eq(reviewID)).Updates(mp)
return err
}

View File

@@ -0,0 +1,323 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dao
import (
"context"
"errors"
"fmt"
"sync"
"time"
"golang.org/x/sync/errgroup"
"gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
"github.com/coze-dev/coze-studio/backend/pkg/logs"
"github.com/coze-dev/coze-studio/backend/types/errno"
)
type KnowledgeDocumentSliceDAO struct {
DB *gorm.DB
Query *query.Query
}
func (dao *KnowledgeDocumentSliceDAO) Create(ctx context.Context, slice *model.KnowledgeDocumentSlice) error {
return dao.Query.KnowledgeDocumentSlice.WithContext(ctx).Create(slice)
}
func (dao *KnowledgeDocumentSliceDAO) Update(ctx context.Context, slice *model.KnowledgeDocumentSlice) error {
s := dao.Query.KnowledgeDocumentSlice
slice.UpdatedAt = time.Now().UnixMilli()
err := s.WithContext(ctx).Save(slice)
return err
}
func (dao *KnowledgeDocumentSliceDAO) BatchCreate(ctx context.Context, slices []*model.KnowledgeDocumentSlice) error {
return dao.Query.KnowledgeDocumentSlice.WithContext(ctx).CreateInBatches(slices, 100)
}
func (dao *KnowledgeDocumentSliceDAO) BatchSetStatus(ctx context.Context, ids []int64, status int32, reason string) error {
s := dao.Query.KnowledgeDocumentSlice
updates := map[string]any{s.Status.ColumnName().String(): status}
if reason != "" {
updates[s.FailReason.ColumnName().String()] = reason
}
updates[s.UpdatedAt.ColumnName().String()] = time.Now().UnixMilli()
_, err := s.WithContext(ctx).Where(s.ID.In(ids...)).Updates(updates)
return err
}
func (dao *KnowledgeDocumentSliceDAO) Delete(ctx context.Context, slice *model.KnowledgeDocumentSlice) error {
s := dao.Query.KnowledgeDocumentSlice
_, err := s.WithContext(ctx).Where(s.ID.Eq(slice.ID)).Delete()
return err
}
func (dao *KnowledgeDocumentSliceDAO) DeleteByDocument(ctx context.Context, documentID int64) error {
s := dao.Query.KnowledgeDocumentSlice
_, err := s.WithContext(ctx).Where(s.DocumentID.Eq(documentID)).Delete()
return err
}
func (dao *KnowledgeDocumentSliceDAO) List(ctx context.Context, knowledgeID int64, documentID int64, limit int) (
pos []*model.KnowledgeDocumentSlice, hasMore bool, err error) {
do, err := dao.listDo(ctx, knowledgeID, documentID)
if err != nil {
return nil, false, err
}
if limit == -1 {
var (
lastID int64 = 0
batchSize = 100
)
for {
sliceArr, _, err := dao.listBatch(ctx, knowledgeID, documentID, batchSize, lastID)
if err != nil {
return nil, false, err
}
if len(sliceArr) == 0 {
break
}
pos = append(pos, sliceArr...)
lastID = sliceArr[len(sliceArr)-1].ID
}
return pos, false, nil
} else {
pos, err = do.Limit(limit).Find()
if err != nil {
return nil, false, err
}
if len(pos) == 0 {
return nil, false, nil
}
hasMore = len(pos) == limit
return pos, hasMore, err
}
}
func (dao *KnowledgeDocumentSliceDAO) listBatch(ctx context.Context, knowledgeID int64, documentID int64, batchSize int, lastID int64) (
pos []*model.KnowledgeDocumentSlice, hasMore bool, err error) {
if batchSize <= 0 {
batchSize = 100 // 默认批量大小
}
do, err := dao.listDo(ctx, knowledgeID, documentID)
if err != nil {
return nil, false, err
}
if lastID > 0 {
do = do.Where(dao.Query.KnowledgeDocumentSlice.ID.Gt(lastID))
}
pos, err = do.Debug().Limit(batchSize).Order(dao.Query.KnowledgeDocumentSlice.ID.Asc()).Find()
if err != nil {
return nil, false, err
}
hasMore = len(pos) == batchSize
return pos, hasMore, nil
}
func (dao *KnowledgeDocumentSliceDAO) listDo(ctx context.Context, knowledgeID int64, documentID int64) (
query.IKnowledgeDocumentSliceDo, error) {
s := dao.Query.KnowledgeDocumentSlice
do := s.WithContext(ctx)
if documentID != 0 {
do = do.Where(s.DocumentID.Eq(documentID))
}
if knowledgeID != 0 {
do = do.Where(s.KnowledgeID.Eq(knowledgeID))
}
return do, nil
}
func (dao *KnowledgeDocumentSliceDAO) GetDocumentSliceIDs(ctx context.Context, docIDs []int64) (sliceIDs []int64, err error) {
if len(docIDs) == 0 {
return nil, errors.New("empty document ids")
}
// doc可能会有很多slice所以批量处理
sliceIDs = make([]int64, 0)
var mu sync.Mutex
errGroup, ctx := errgroup.WithContext(ctx)
errGroup.SetLimit(10)
for i := range docIDs {
docID := docIDs[i]
errGroup.Go(func() (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
logs.CtxErrorf(ctx, "[getDocSliceIDs] routine error recover:%+v", panicErr)
}
}()
select {
case <-ctx.Done():
logs.CtxErrorf(ctx, "[getDocSliceIDs] doc_id:%d canceled", docID)
return ctx.Err()
default:
}
slices, _, dbErr := dao.List(ctx, 0, docID, -1)
if dbErr != nil {
logs.CtxErrorf(ctx, "[getDocSliceIDs] get deleted slice id err:%+v, doc_id:%v", dbErr, docID)
return dbErr
}
mu.Lock()
for _, slice := range slices {
sliceIDs = append(sliceIDs, slice.ID)
}
mu.Unlock()
return nil
})
}
if err = errGroup.Wait(); err != nil {
return nil, err
}
return sliceIDs, nil
}
func (dao *KnowledgeDocumentSliceDAO) MGetSlices(ctx context.Context, sliceIDs []int64) ([]*model.KnowledgeDocumentSlice, error) {
if len(sliceIDs) == 0 {
return nil, nil
}
s := dao.Query.KnowledgeDocumentSlice
pos, err := s.WithContext(ctx).Where(s.ID.In(sliceIDs...)).Find()
if err != nil {
return nil, err
}
return pos, nil
}
func (dao *KnowledgeDocumentSliceDAO) FindSliceByCondition(ctx context.Context, opts *entity.WhereSliceOpt) (
[]*model.KnowledgeDocumentSlice, int64, error) {
s := dao.Query.KnowledgeDocumentSlice
do := s.WithContext(ctx)
if opts.DocumentID != 0 {
do = do.Where(s.DocumentID.Eq(opts.DocumentID))
}
if len(opts.DocumentIDs) != 0 {
do = do.Where(s.DocumentID.In(opts.DocumentIDs...))
}
if opts.KnowledgeID != 0 {
do = do.Where(s.KnowledgeID.Eq(opts.KnowledgeID))
}
if opts.DocumentID == 0 && opts.KnowledgeID == 0 && len(opts.DocumentIDs) == 0 {
return nil, 0, errors.New("documentID and knowledgeID cannot be empty at the same time")
}
if opts.Keyword != nil && len(*opts.Keyword) != 0 {
do = do.Where(s.Content.Like(*opts.Keyword))
}
if opts.PageSize != 0 {
do = do.Limit(int(opts.PageSize))
do = do.Offset(int(opts.Sequence)).Order(s.Sequence.Asc())
}
if opts.NotEmpty != nil {
if ptr.From(opts.NotEmpty) {
do = do.Where(s.Content.Neq(""))
} else {
do = do.Where(s.Content.Eq(""))
}
}
pos, err := do.Find()
if err != nil {
return nil, 0, err
}
total, err := do.Limit(-1).Offset(-1).Count()
if err != nil {
return nil, 0, err
}
return pos, total, nil
}
func (dao *KnowledgeDocumentSliceDAO) GetSliceBySequence(ctx context.Context, documentID, sequence int64) ([]*model.KnowledgeDocumentSlice, error) {
if documentID == 0 {
return nil, errors.New("documentID cannot be empty")
}
s := dao.Query.KnowledgeDocumentSlice
var offset int
if sequence >= 2 {
offset = int(sequence - 2)
}
pos, err := s.WithContext(ctx).Where(s.DocumentID.Eq(documentID)).Offset(offset).Order(s.Sequence.Asc()).Limit(2).Find()
if err != nil {
return nil, err
}
return pos, nil
}
func (dao *KnowledgeDocumentSliceDAO) IncrementHitCount(ctx context.Context, sliceIDs []int64) error {
if len(sliceIDs) == 0 {
return nil
}
s := dao.Query.KnowledgeDocumentSlice
_, err := s.WithContext(ctx).Debug().Where(s.ID.In(sliceIDs...)).Updates(map[string]interface{}{
s.Hit.ColumnName().String(): gorm.Expr("hit +?", 1),
s.UpdatedAt.ColumnName().String(): time.Now().UnixMilli(),
})
return err
}
func (dao *KnowledgeDocumentSliceDAO) GetSliceHitByKnowledgeID(ctx context.Context, knowledgeID int64) (int64, error) {
if knowledgeID == 0 {
return 0, errors.New("knowledgeID cannot be empty")
}
s := dao.Query.KnowledgeDocumentSlice
var totalSliceHit *int64
err := s.WithContext(ctx).Debug().Select(s.Hit.Sum()).Where(s.KnowledgeID.Eq(knowledgeID)).Scan(&totalSliceHit)
if err != nil {
return 0, err
}
return ptr.From(totalSliceHit), nil
}
func (dao *KnowledgeDocumentSliceDAO) GetLastSequence(ctx context.Context, documentID int64) (float64, error) {
if documentID == 0 {
return 0, errors.New("[GetLastSequence] documentID cannot be empty")
}
s := dao.Query.KnowledgeDocumentSlice
resp, err := s.WithContext(ctx).Debug().
Select(s.Sequence).
Where(s.DocumentID.Eq(documentID)).
Order(s.Sequence.Desc()).
First()
if err == gorm.ErrRecordNotFound {
return 0, nil
}
if err != nil {
return 0, fmt.Errorf("[GetLastSequence] db exec err, document_id=%v, %w", documentID, err)
}
if resp == nil {
return 0, errorx.New(errno.ErrKnowledgeNonRetryableCode,
errorx.KVf("reason", "[GetLastSequence] resp is nil, document_id=%v", documentID))
}
return resp.Sequence, nil
}

View File

@@ -0,0 +1,229 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dao
import (
"context"
"errors"
"strings"
"testing"
. "github.com/bytedance/mockey"
. "github.com/smartystreets/goconvey/convey"
"github.com/stretchr/testify/suite"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/orm"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
)
func TestKnowledgeDocument(t *testing.T) {
suite.Run(t, &DocumentTestSuite{})
}
type DocumentTestSuite struct {
suite.Suite
ctx context.Context
db *gorm.DB
dao *KnowledgeDocumentDAO
}
func (suite *DocumentTestSuite) SetupSuite() {
suite.ctx = context.Background()
mockDB := orm.NewMockDB()
mockDB.AddTable(&model.KnowledgeDocument{})
mockDB.AddTable(&model.KnowledgeDocumentSlice{})
db, err := mockDB.DB()
if err != nil {
panic(err)
}
suite.db = db
suite.dao = &KnowledgeDocumentDAO{
DB: db,
Query: query.Use(db),
}
}
func (suite *DocumentTestSuite) TearDownTest() {
suite.clearDB()
}
func (suite *DocumentTestSuite) clearDB() {
suite.db.WithContext(suite.ctx).Unscoped().Delete(&model.KnowledgeDocument{})
suite.db.WithContext(suite.ctx).Unscoped().Delete(&model.KnowledgeDocumentSlice{})
}
func (suite *DocumentTestSuite) TestCRUD() {
PatchConvey("test crud", suite.T(), func() {
ctx := suite.ctx
q := suite.dao.Query.KnowledgeDocument
err := suite.dao.Create(ctx, &model.KnowledgeDocument{ID: 123, KnowledgeID: 456})
So(err, ShouldBeNil)
first, err := q.WithContext(ctx).Where(q.ID.Eq(123)).First()
So(err, ShouldBeNil)
So(first, ShouldNotBeNil)
So(first.KnowledgeID, ShouldEqual, int64(456))
err = suite.dao.Update(ctx, &model.KnowledgeDocument{ID: 123, KnowledgeID: 654})
So(err, ShouldBeNil)
first, err = q.WithContext(ctx).Where(q.ID.Eq(123)).First()
So(err, ShouldBeNil)
So(first, ShouldNotBeNil)
So(first.KnowledgeID, ShouldEqual, int64(654))
err = suite.dao.Delete(ctx, 123)
So(err, ShouldBeNil)
first, err = q.WithContext(ctx).Where(q.ID.Eq(123)).First()
So(err, ShouldNotBeNil)
So(errors.Is(err, gorm.ErrRecordNotFound), ShouldBeTrue)
So(first, ShouldBeNil)
})
}
func (suite *DocumentTestSuite) TestMGetByID() {
PatchConvey("test MGetByID", suite.T(), func() {
ctx := suite.ctx
resp, err := suite.dao.MGetByID(ctx, nil)
So(err, ShouldBeNil)
So(resp, ShouldBeNil)
suite.db.Create([]*model.KnowledgeDocument{
{
ID: 666,
KnowledgeID: 123,
}, {
ID: 667,
KnowledgeID: 123,
},
})
resp, err = suite.dao.MGetByID(ctx, []int64{666, 667})
So(err, ShouldBeNil)
So(len(resp), ShouldEqual, 2)
})
}
func (suite *DocumentTestSuite) TestUpdateDocumentSliceInfo() {
PatchConvey("test UpdateDocumentSliceInfo", suite.T(), func() {
ctx := suite.ctx
suite.db.Create([]*model.KnowledgeDocumentSlice{
{
ID: 1,
KnowledgeID: 123,
DocumentID: 456,
Content: "hello",
},
{
ID: 2,
KnowledgeID: 123,
DocumentID: 456,
Content: "world",
},
})
suite.db.Create(&model.KnowledgeDocument{
ID: 456,
KnowledgeID: 123,
})
Mock(GetMethod(suite.db, "Raw")).To(func(sql string, values ...interface{}) (tx *gorm.DB) {
tx = suite.db.WithContext(suite.ctx)
tx.Statement.SQL = strings.Builder{}
newSQL := strings.Replace(sql, "CHAR_LENGTH", "LENGTH", 1)
if strings.Contains(newSQL, "@") {
clause.NamedExpr{SQL: newSQL, Vars: values}.Build(tx.Statement)
} else {
clause.Expr{SQL: newSQL, Vars: values}.Build(tx.Statement)
}
return tx
}).Build()
err := suite.dao.UpdateDocumentSliceInfo(ctx, 456)
So(err, ShouldBeNil)
q := suite.dao.Query.KnowledgeDocument
d, err := q.WithContext(ctx).Where(q.ID.Eq(456)).First()
So(err, ShouldBeNil)
So(d, ShouldNotBeNil)
So(d.SliceCount, ShouldEqual, 2)
So(d.Size, ShouldEqual, 10)
})
}
func (suite *DocumentTestSuite) TestFindDocumentByCondition() {
PatchConvey("test FindDocumentByCondition", suite.T(), func() {
ctx := context.Background()
mockDB := orm.NewMockDB()
mockDB.AddTable(&model.KnowledgeDocument{})
db, err := mockDB.DB()
So(err, ShouldBeNil)
dao := &KnowledgeDocumentDAO{
DB: db,
Query: query.Use(db),
}
db.Create([]*model.KnowledgeDocument{
{
ID: 666,
KnowledgeID: 123,
}, {
ID: 667,
KnowledgeID: 123,
},
})
PatchConvey("test paging", func() {
resp, total, err := dao.FindDocumentByCondition(ctx, &entity.WhereDocumentOpt{
IDs: []int64{666, 667},
KnowledgeIDs: []int64{123},
Limit: 1,
Offset: ptr.Of(0),
})
So(err, ShouldBeNil)
So(total, ShouldEqual, 2)
So(len(resp), ShouldEqual, 1)
So(resp[0].ID, ShouldEqual, int64(666))
resp, total, err = dao.FindDocumentByCondition(ctx, &entity.WhereDocumentOpt{
IDs: []int64{666, 667},
KnowledgeIDs: []int64{123},
Limit: 1,
Offset: ptr.Of(1),
})
So(err, ShouldBeNil)
So(total, ShouldEqual, 2)
So(len(resp), ShouldEqual, 1)
So(resp[0].ID, ShouldEqual, int64(667))
resp, total, err = dao.FindDocumentByCondition(ctx, &entity.WhereDocumentOpt{
IDs: []int64{666, 667},
KnowledgeIDs: []int64{123},
Limit: 1,
Offset: ptr.Of(2),
})
So(err, ShouldBeNil)
So(total, ShouldEqual, 2)
So(len(resp), ShouldEqual, 0)
})
})
}

View File

@@ -0,0 +1,87 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dao
import (
"context"
"testing"
. "github.com/bytedance/mockey"
. "github.com/smartystreets/goconvey/convey"
"github.com/stretchr/testify/suite"
"gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/orm"
)
func TestKnowledgeSuite(t *testing.T) {
suite.Run(t, new(KnowledgeSuite))
}
type KnowledgeSuite struct {
suite.Suite
ctx context.Context
db *gorm.DB
dao *KnowledgeDAO
}
func (suite *KnowledgeSuite) SetupSuite() {
suite.ctx = context.Background()
mockDB := orm.NewMockDB()
mockDB.AddTable(&model.Knowledge{})
db, err := mockDB.DB()
if err != nil {
panic(err)
}
suite.db = db
suite.dao = &KnowledgeDAO{
DB: db,
Query: query.Use(db),
}
}
func (suite *KnowledgeSuite) TearDownTest() {
suite.db.WithContext(suite.ctx).Unscoped().Delete(&model.Knowledge{})
}
func (suite *KnowledgeSuite) TestCRUD() {
PatchConvey("test crud", suite.T(), func() {
ctx := suite.ctx
q := suite.dao.Query.Knowledge
err := suite.dao.Create(ctx, &model.Knowledge{
ID: 123,
Name: "test",
})
So(err, ShouldBeNil)
k, err := q.WithContext(ctx).Where(q.ID.Eq(123)).First()
So(err, ShouldBeNil)
So(k.Name, ShouldEqual, "test")
err = suite.dao.Upsert(ctx, &model.Knowledge{
ID: 123,
Name: "testtest",
})
So(err, ShouldBeNil)
k, err = q.WithContext(ctx).Where(q.ID.Eq(123)).First()
So(err, ShouldBeNil)
So(k.Name, ShouldEqual, "testtest")
})
}

View File

@@ -0,0 +1,32 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"gorm.io/gorm"
)
const TableNameKnowledge = "knowledge"
// Knowledge 知识库表
type Knowledge struct {
ID int64 `gorm:"column:id;primaryKey;comment:主键ID" json:"id"` // 主键ID
Name string `gorm:"column:name;not null;comment:名称" json:"name"` // 名称
AppID int64 `gorm:"column:app_id;not null;comment:项目ID标识该资源是否是项目独有" json:"app_id"` // 项目ID标识该资源是否是项目独有
CreatorID int64 `gorm:"column:creator_id;not null;comment:ID" json:"creator_id"` // ID
SpaceID int64 `gorm:"column:space_id;not null;comment:空间ID" json:"space_id"` // 空间ID
CreatedAt int64 `gorm:"column:created_at;not null;comment:Create Time in Milliseconds" json:"created_at"` // Create Time in Milliseconds
UpdatedAt int64 `gorm:"column:updated_at;not null;comment:Update Time in Milliseconds" json:"updated_at"` // Update Time in Milliseconds
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;comment:Delete Time in Milliseconds" json:"deleted_at"` // Delete Time in Milliseconds
Status int32 `gorm:"column:status;not null;default:1;comment:0 初始化, 1 生效 2 失效" json:"status"` // 0 初始化, 1 生效 2 失效
Description string `gorm:"column:description;comment:描述" json:"description"` // 描述
IconURI string `gorm:"column:icon_uri;comment:头像uri" json:"icon_uri"` // 头像uri
FormatType int32 `gorm:"column:format_type;not null;comment:0:文本 1:表格 2:图片" json:"format_type"` // 0:文本 1:表格 2:图片
}
// TableName Knowledge's table name
func (*Knowledge) TableName() string {
return TableNameKnowledge
}

View File

@@ -0,0 +1,40 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
"gorm.io/gorm"
)
const TableNameKnowledgeDocument = "knowledge_document"
// KnowledgeDocument 知识库文档表
type KnowledgeDocument struct {
ID int64 `gorm:"column:id;primaryKey;comment:主键ID" json:"id"` // 主键ID
KnowledgeID int64 `gorm:"column:knowledge_id;not null;comment:所属knowledge的ID" json:"knowledge_id"` // 所属knowledge的ID
Name string `gorm:"column:name;not null;comment:文档名称" json:"name"` // 文档名称
FileExtension string `gorm:"column:file_extension;not null;default:0;comment:文档类型, txt/pdf/csv/..." json:"file_extension"` // 文档类型, txt/pdf/csv/...
DocumentType int32 `gorm:"column:document_type;not null;comment:文档类型: 0:文本 1:表格 2:图片" json:"document_type"` // 文档类型: 0:文本 1:表格 2:图片
URI string `gorm:"column:uri;comment:资源uri" json:"uri"` // 资源uri
Size int64 `gorm:"column:size;not null;comment:文档大小" json:"size"` // 文档大小
SliceCount int64 `gorm:"column:slice_count;not null;comment:分片数量" json:"slice_count"` // 分片数量
CharCount int64 `gorm:"column:char_count;not null;comment:字符数" json:"char_count"` // 字符数
CreatorID int64 `gorm:"column:creator_id;not null;comment:创建者ID" json:"creator_id"` // 创建者ID
SpaceID int64 `gorm:"column:space_id;not null;comment:空间id" json:"space_id"` // 空间id
CreatedAt int64 `gorm:"column:created_at;not null;comment:Create Time in Milliseconds" json:"created_at"` // Create Time in Milliseconds
UpdatedAt int64 `gorm:"column:updated_at;not null;comment:Update Time in Milliseconds" json:"updated_at"` // Update Time in Milliseconds
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;comment:Delete Time in Milliseconds" json:"deleted_at"` // Delete Time in Milliseconds
SourceType int32 `gorm:"column:source_type;not null;comment:0:本地文件上传, 2:自定义文本" json:"source_type"` // 0:本地文件上传, 2:自定义文本
Status int32 `gorm:"column:status;not null;comment:状态" json:"status"` // 状态
FailReason string `gorm:"column:fail_reason;comment:失败原因" json:"fail_reason"` // 失败原因
ParseRule *DocumentParseRule `gorm:"column:parse_rule;comment:解析+切片规则;serializer:json" json:"parse_rule"` // 解析+切片规则
TableInfo *entity.TableInfo `gorm:"column:table_info;comment:表格信息;serializer:json" json:"table_info"` // 表格信息
}
// TableName KnowledgeDocument's table name
func (*KnowledgeDocument) TableName() string {
return TableNameKnowledgeDocument
}

View File

@@ -0,0 +1,33 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"gorm.io/gorm"
)
const TableNameKnowledgeDocumentReview = "knowledge_document_review"
// KnowledgeDocumentReview 文档审阅表
type KnowledgeDocumentReview struct {
ID int64 `gorm:"column:id;primaryKey;comment:主键ID" json:"id"` // 主键ID
KnowledgeID int64 `gorm:"column:knowledge_id;not null;comment:knowledge id" json:"knowledge_id"` // knowledge id
SpaceID int64 `gorm:"column:space_id;not null;comment:空间id" json:"space_id"` // 空间id
Name string `gorm:"column:name;not null;comment:文档名称" json:"name"` // 文档名称
Type string `gorm:"column:type;not null;default:0;comment:文档类型" json:"type"` // 文档类型
URI string `gorm:"column:uri;comment:资源标识" json:"uri"` // 资源标识
FormatType int32 `gorm:"column:format_type;not null;comment:0 文本, 1 表格, 2 图片" json:"format_type"` // 0 文本, 1 表格, 2 图片
Status int32 `gorm:"column:status;not null;comment:0 处理中1 已完成2 失败3 失效" json:"status"` // 0 处理中1 已完成2 失败3 失效
ChunkRespURI string `gorm:"column:chunk_resp_uri;comment:预切片tos资源标识" json:"chunk_resp_uri"` // 预切片tos资源标识
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;comment:Delete Time in Milliseconds" json:"deleted_at"` // Delete Time in Milliseconds
CreatedAt int64 `gorm:"column:created_at;not null;comment:Create Time in Milliseconds" json:"created_at"` // Create Time in Milliseconds
UpdatedAt int64 `gorm:"column:updated_at;not null;comment:Update Time in Milliseconds" json:"updated_at"` // Update Time in Milliseconds
CreatorID int64 `gorm:"column:creator_id;not null;comment:创建者ID" json:"creator_id"` // 创建者ID
}
// TableName KnowledgeDocumentReview's table name
func (*KnowledgeDocumentReview) TableName() string {
return TableNameKnowledgeDocumentReview
}

View File

@@ -0,0 +1,33 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"gorm.io/gorm"
)
const TableNameKnowledgeDocumentSlice = "knowledge_document_slice"
// KnowledgeDocumentSlice 知识库文件切片表
type KnowledgeDocumentSlice struct {
ID int64 `gorm:"column:id;primaryKey;comment:主键ID" json:"id"` // 主键ID
KnowledgeID int64 `gorm:"column:knowledge_id;not null;comment:knowledge id" json:"knowledge_id"` // knowledge id
DocumentID int64 `gorm:"column:document_id;not null;comment:document id" json:"document_id"` // document id
Content string `gorm:"column:content;comment:切片内容" json:"content"` // 切片内容
Sequence float64 `gorm:"column:sequence;not null;type:decimal(20,5);comment:切片顺序号, 从1开始" json:"sequence"` // 切片顺序号, 从1开始
CreatedAt int64 `gorm:"column:created_at;not null;comment:Create Time in Milliseconds" json:"created_at"` // Create Time in Milliseconds
UpdatedAt int64 `gorm:"column:updated_at;not null;comment:Update Time in Milliseconds" json:"updated_at"` // Update Time in Milliseconds
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;comment:Delete Time in Milliseconds" json:"deleted_at"` // Delete Time in Milliseconds
CreatorID int64 `gorm:"column:creator_id;not null;comment:创建者ID" json:"creator_id"` // 创建者ID
SpaceID int64 `gorm:"column:space_id;not null;comment:空间ID" json:"space_id"` // 空间ID
Status int32 `gorm:"column:status;not null;comment:状态" json:"status"` // 状态
FailReason string `gorm:"column:fail_reason;comment:失败原因" json:"fail_reason"` // 失败原因
Hit int64 `gorm:"column:hit;not null;comment:命中次数" json:"hit"` // 命中次数
}
// TableName KnowledgeDocumentSlice's table name
func (*KnowledgeDocumentSlice) TableName() string {
return TableNameKnowledgeDocumentSlice
}

View File

@@ -0,0 +1,14 @@
package model
type SliceStatus int32
const (
SliceStatusProcessing SliceStatus = 0
SliceStatusDone SliceStatus = 1
SliceStatusFailed SliceStatus = 2
)
type SliceProgress struct {
Status SliceStatus
StatusMsg string
}

View File

@@ -0,0 +1,8 @@
package model
import "github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
type DocumentParseRule struct {
ParsingStrategy *entity.ParsingStrategy `json:"parsing_strategy"`
ChunkingStrategy *entity.ChunkingStrategy `json:"chunking_strategy"`
}

View File

@@ -0,0 +1,127 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"database/sql"
"gorm.io/gorm"
"gorm.io/gen"
"gorm.io/plugin/dbresolver"
)
var (
Q = new(Query)
Knowledge *knowledge
KnowledgeDocument *knowledgeDocument
KnowledgeDocumentReview *knowledgeDocumentReview
KnowledgeDocumentSlice *knowledgeDocumentSlice
)
func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
*Q = *Use(db, opts...)
Knowledge = &Q.Knowledge
KnowledgeDocument = &Q.KnowledgeDocument
KnowledgeDocumentReview = &Q.KnowledgeDocumentReview
KnowledgeDocumentSlice = &Q.KnowledgeDocumentSlice
}
func Use(db *gorm.DB, opts ...gen.DOOption) *Query {
return &Query{
db: db,
Knowledge: newKnowledge(db, opts...),
KnowledgeDocument: newKnowledgeDocument(db, opts...),
KnowledgeDocumentReview: newKnowledgeDocumentReview(db, opts...),
KnowledgeDocumentSlice: newKnowledgeDocumentSlice(db, opts...),
}
}
type Query struct {
db *gorm.DB
Knowledge knowledge
KnowledgeDocument knowledgeDocument
KnowledgeDocumentReview knowledgeDocumentReview
KnowledgeDocumentSlice knowledgeDocumentSlice
}
func (q *Query) Available() bool { return q.db != nil }
func (q *Query) clone(db *gorm.DB) *Query {
return &Query{
db: db,
Knowledge: q.Knowledge.clone(db),
KnowledgeDocument: q.KnowledgeDocument.clone(db),
KnowledgeDocumentReview: q.KnowledgeDocumentReview.clone(db),
KnowledgeDocumentSlice: q.KnowledgeDocumentSlice.clone(db),
}
}
func (q *Query) ReadDB() *Query {
return q.ReplaceDB(q.db.Clauses(dbresolver.Read))
}
func (q *Query) WriteDB() *Query {
return q.ReplaceDB(q.db.Clauses(dbresolver.Write))
}
func (q *Query) ReplaceDB(db *gorm.DB) *Query {
return &Query{
db: db,
Knowledge: q.Knowledge.replaceDB(db),
KnowledgeDocument: q.KnowledgeDocument.replaceDB(db),
KnowledgeDocumentReview: q.KnowledgeDocumentReview.replaceDB(db),
KnowledgeDocumentSlice: q.KnowledgeDocumentSlice.replaceDB(db),
}
}
type queryCtx struct {
Knowledge IKnowledgeDo
KnowledgeDocument IKnowledgeDocumentDo
KnowledgeDocumentReview IKnowledgeDocumentReviewDo
KnowledgeDocumentSlice IKnowledgeDocumentSliceDo
}
func (q *Query) WithContext(ctx context.Context) *queryCtx {
return &queryCtx{
Knowledge: q.Knowledge.WithContext(ctx),
KnowledgeDocument: q.KnowledgeDocument.WithContext(ctx),
KnowledgeDocumentReview: q.KnowledgeDocumentReview.WithContext(ctx),
KnowledgeDocumentSlice: q.KnowledgeDocumentSlice.WithContext(ctx),
}
}
func (q *Query) Transaction(fc func(tx *Query) error, opts ...*sql.TxOptions) error {
return q.db.Transaction(func(tx *gorm.DB) error { return fc(q.clone(tx)) }, opts...)
}
func (q *Query) Begin(opts ...*sql.TxOptions) *QueryTx {
tx := q.db.Begin(opts...)
return &QueryTx{Query: q.clone(tx), Error: tx.Error}
}
type QueryTx struct {
*Query
Error error
}
func (q *QueryTx) Commit() error {
return q.db.Commit().Error
}
func (q *QueryTx) Rollback() error {
return q.db.Rollback().Error
}
func (q *QueryTx) SavePoint(name string) error {
return q.db.SavePoint(name).Error
}
func (q *QueryTx) RollbackTo(name string) error {
return q.db.RollbackTo(name).Error
}

View File

@@ -0,0 +1,425 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
)
func newKnowledge(db *gorm.DB, opts ...gen.DOOption) knowledge {
_knowledge := knowledge{}
_knowledge.knowledgeDo.UseDB(db, opts...)
_knowledge.knowledgeDo.UseModel(&model.Knowledge{})
tableName := _knowledge.knowledgeDo.TableName()
_knowledge.ALL = field.NewAsterisk(tableName)
_knowledge.ID = field.NewInt64(tableName, "id")
_knowledge.Name = field.NewString(tableName, "name")
_knowledge.AppID = field.NewInt64(tableName, "app_id")
_knowledge.CreatorID = field.NewInt64(tableName, "creator_id")
_knowledge.SpaceID = field.NewInt64(tableName, "space_id")
_knowledge.CreatedAt = field.NewInt64(tableName, "created_at")
_knowledge.UpdatedAt = field.NewInt64(tableName, "updated_at")
_knowledge.DeletedAt = field.NewField(tableName, "deleted_at")
_knowledge.Status = field.NewInt32(tableName, "status")
_knowledge.Description = field.NewString(tableName, "description")
_knowledge.IconURI = field.NewString(tableName, "icon_uri")
_knowledge.FormatType = field.NewInt32(tableName, "format_type")
_knowledge.fillFieldMap()
return _knowledge
}
// knowledge 知识库表
type knowledge struct {
knowledgeDo
ALL field.Asterisk
ID field.Int64 // 主键ID
Name field.String // 名称
AppID field.Int64 // 项目ID标识该资源是否是项目独有
CreatorID field.Int64 // ID
SpaceID field.Int64 // 空间ID
CreatedAt field.Int64 // Create Time in Milliseconds
UpdatedAt field.Int64 // Update Time in Milliseconds
DeletedAt field.Field // Delete Time in Milliseconds
Status field.Int32 // 0 初始化, 1 生效 2 失效
Description field.String // 描述
IconURI field.String // 头像uri
FormatType field.Int32 // 0:文本 1:表格 2:图片
fieldMap map[string]field.Expr
}
func (k knowledge) Table(newTableName string) *knowledge {
k.knowledgeDo.UseTable(newTableName)
return k.updateTableName(newTableName)
}
func (k knowledge) As(alias string) *knowledge {
k.knowledgeDo.DO = *(k.knowledgeDo.As(alias).(*gen.DO))
return k.updateTableName(alias)
}
func (k *knowledge) updateTableName(table string) *knowledge {
k.ALL = field.NewAsterisk(table)
k.ID = field.NewInt64(table, "id")
k.Name = field.NewString(table, "name")
k.AppID = field.NewInt64(table, "app_id")
k.CreatorID = field.NewInt64(table, "creator_id")
k.SpaceID = field.NewInt64(table, "space_id")
k.CreatedAt = field.NewInt64(table, "created_at")
k.UpdatedAt = field.NewInt64(table, "updated_at")
k.DeletedAt = field.NewField(table, "deleted_at")
k.Status = field.NewInt32(table, "status")
k.Description = field.NewString(table, "description")
k.IconURI = field.NewString(table, "icon_uri")
k.FormatType = field.NewInt32(table, "format_type")
k.fillFieldMap()
return k
}
func (k *knowledge) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := k.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (k *knowledge) fillFieldMap() {
k.fieldMap = make(map[string]field.Expr, 12)
k.fieldMap["id"] = k.ID
k.fieldMap["name"] = k.Name
k.fieldMap["app_id"] = k.AppID
k.fieldMap["creator_id"] = k.CreatorID
k.fieldMap["space_id"] = k.SpaceID
k.fieldMap["created_at"] = k.CreatedAt
k.fieldMap["updated_at"] = k.UpdatedAt
k.fieldMap["deleted_at"] = k.DeletedAt
k.fieldMap["status"] = k.Status
k.fieldMap["description"] = k.Description
k.fieldMap["icon_uri"] = k.IconURI
k.fieldMap["format_type"] = k.FormatType
}
func (k knowledge) clone(db *gorm.DB) knowledge {
k.knowledgeDo.ReplaceConnPool(db.Statement.ConnPool)
return k
}
func (k knowledge) replaceDB(db *gorm.DB) knowledge {
k.knowledgeDo.ReplaceDB(db)
return k
}
type knowledgeDo struct{ gen.DO }
type IKnowledgeDo interface {
gen.SubQuery
Debug() IKnowledgeDo
WithContext(ctx context.Context) IKnowledgeDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() IKnowledgeDo
WriteDB() IKnowledgeDo
As(alias string) gen.Dao
Session(config *gorm.Session) IKnowledgeDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) IKnowledgeDo
Not(conds ...gen.Condition) IKnowledgeDo
Or(conds ...gen.Condition) IKnowledgeDo
Select(conds ...field.Expr) IKnowledgeDo
Where(conds ...gen.Condition) IKnowledgeDo
Order(conds ...field.Expr) IKnowledgeDo
Distinct(cols ...field.Expr) IKnowledgeDo
Omit(cols ...field.Expr) IKnowledgeDo
Join(table schema.Tabler, on ...field.Expr) IKnowledgeDo
LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDo
RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDo
Group(cols ...field.Expr) IKnowledgeDo
Having(conds ...gen.Condition) IKnowledgeDo
Limit(limit int) IKnowledgeDo
Offset(offset int) IKnowledgeDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDo
Unscoped() IKnowledgeDo
Create(values ...*model.Knowledge) error
CreateInBatches(values []*model.Knowledge, batchSize int) error
Save(values ...*model.Knowledge) error
First() (*model.Knowledge, error)
Take() (*model.Knowledge, error)
Last() (*model.Knowledge, error)
Find() ([]*model.Knowledge, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Knowledge, err error)
FindInBatches(result *[]*model.Knowledge, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.Knowledge) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) IKnowledgeDo
Assign(attrs ...field.AssignExpr) IKnowledgeDo
Joins(fields ...field.RelationField) IKnowledgeDo
Preload(fields ...field.RelationField) IKnowledgeDo
FirstOrInit() (*model.Knowledge, error)
FirstOrCreate() (*model.Knowledge, error)
FindByPage(offset int, limit int) (result []*model.Knowledge, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) IKnowledgeDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (k knowledgeDo) Debug() IKnowledgeDo {
return k.withDO(k.DO.Debug())
}
func (k knowledgeDo) WithContext(ctx context.Context) IKnowledgeDo {
return k.withDO(k.DO.WithContext(ctx))
}
func (k knowledgeDo) ReadDB() IKnowledgeDo {
return k.Clauses(dbresolver.Read)
}
func (k knowledgeDo) WriteDB() IKnowledgeDo {
return k.Clauses(dbresolver.Write)
}
func (k knowledgeDo) Session(config *gorm.Session) IKnowledgeDo {
return k.withDO(k.DO.Session(config))
}
func (k knowledgeDo) Clauses(conds ...clause.Expression) IKnowledgeDo {
return k.withDO(k.DO.Clauses(conds...))
}
func (k knowledgeDo) Returning(value interface{}, columns ...string) IKnowledgeDo {
return k.withDO(k.DO.Returning(value, columns...))
}
func (k knowledgeDo) Not(conds ...gen.Condition) IKnowledgeDo {
return k.withDO(k.DO.Not(conds...))
}
func (k knowledgeDo) Or(conds ...gen.Condition) IKnowledgeDo {
return k.withDO(k.DO.Or(conds...))
}
func (k knowledgeDo) Select(conds ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.Select(conds...))
}
func (k knowledgeDo) Where(conds ...gen.Condition) IKnowledgeDo {
return k.withDO(k.DO.Where(conds...))
}
func (k knowledgeDo) Order(conds ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.Order(conds...))
}
func (k knowledgeDo) Distinct(cols ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.Distinct(cols...))
}
func (k knowledgeDo) Omit(cols ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.Omit(cols...))
}
func (k knowledgeDo) Join(table schema.Tabler, on ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.Join(table, on...))
}
func (k knowledgeDo) LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.LeftJoin(table, on...))
}
func (k knowledgeDo) RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.RightJoin(table, on...))
}
func (k knowledgeDo) Group(cols ...field.Expr) IKnowledgeDo {
return k.withDO(k.DO.Group(cols...))
}
func (k knowledgeDo) Having(conds ...gen.Condition) IKnowledgeDo {
return k.withDO(k.DO.Having(conds...))
}
func (k knowledgeDo) Limit(limit int) IKnowledgeDo {
return k.withDO(k.DO.Limit(limit))
}
func (k knowledgeDo) Offset(offset int) IKnowledgeDo {
return k.withDO(k.DO.Offset(offset))
}
func (k knowledgeDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDo {
return k.withDO(k.DO.Scopes(funcs...))
}
func (k knowledgeDo) Unscoped() IKnowledgeDo {
return k.withDO(k.DO.Unscoped())
}
func (k knowledgeDo) Create(values ...*model.Knowledge) error {
if len(values) == 0 {
return nil
}
return k.DO.Create(values)
}
func (k knowledgeDo) CreateInBatches(values []*model.Knowledge, batchSize int) error {
return k.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (k knowledgeDo) Save(values ...*model.Knowledge) error {
if len(values) == 0 {
return nil
}
return k.DO.Save(values)
}
func (k knowledgeDo) First() (*model.Knowledge, error) {
if result, err := k.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.Knowledge), nil
}
}
func (k knowledgeDo) Take() (*model.Knowledge, error) {
if result, err := k.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.Knowledge), nil
}
}
func (k knowledgeDo) Last() (*model.Knowledge, error) {
if result, err := k.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.Knowledge), nil
}
}
func (k knowledgeDo) Find() ([]*model.Knowledge, error) {
result, err := k.DO.Find()
return result.([]*model.Knowledge), err
}
func (k knowledgeDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Knowledge, err error) {
buf := make([]*model.Knowledge, 0, batchSize)
err = k.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (k knowledgeDo) FindInBatches(result *[]*model.Knowledge, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return k.DO.FindInBatches(result, batchSize, fc)
}
func (k knowledgeDo) Attrs(attrs ...field.AssignExpr) IKnowledgeDo {
return k.withDO(k.DO.Attrs(attrs...))
}
func (k knowledgeDo) Assign(attrs ...field.AssignExpr) IKnowledgeDo {
return k.withDO(k.DO.Assign(attrs...))
}
func (k knowledgeDo) Joins(fields ...field.RelationField) IKnowledgeDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Joins(_f))
}
return &k
}
func (k knowledgeDo) Preload(fields ...field.RelationField) IKnowledgeDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Preload(_f))
}
return &k
}
func (k knowledgeDo) FirstOrInit() (*model.Knowledge, error) {
if result, err := k.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.Knowledge), nil
}
}
func (k knowledgeDo) FirstOrCreate() (*model.Knowledge, error) {
if result, err := k.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.Knowledge), nil
}
}
func (k knowledgeDo) FindByPage(offset int, limit int) (result []*model.Knowledge, count int64, err error) {
result, err = k.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = k.Offset(-1).Limit(-1).Count()
return
}
func (k knowledgeDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = k.Count()
if err != nil {
return
}
err = k.Offset(offset).Limit(limit).Scan(result)
return
}
func (k knowledgeDo) Scan(result interface{}) (err error) {
return k.DO.Scan(result)
}
func (k knowledgeDo) Delete(models ...*model.Knowledge) (result gen.ResultInfo, err error) {
return k.DO.Delete(models)
}
func (k *knowledgeDo) withDO(do gen.Dao) *knowledgeDo {
k.DO = *do.(*gen.DO)
return k
}

View File

@@ -0,0 +1,453 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
)
func newKnowledgeDocument(db *gorm.DB, opts ...gen.DOOption) knowledgeDocument {
_knowledgeDocument := knowledgeDocument{}
_knowledgeDocument.knowledgeDocumentDo.UseDB(db, opts...)
_knowledgeDocument.knowledgeDocumentDo.UseModel(&model.KnowledgeDocument{})
tableName := _knowledgeDocument.knowledgeDocumentDo.TableName()
_knowledgeDocument.ALL = field.NewAsterisk(tableName)
_knowledgeDocument.ID = field.NewInt64(tableName, "id")
_knowledgeDocument.KnowledgeID = field.NewInt64(tableName, "knowledge_id")
_knowledgeDocument.Name = field.NewString(tableName, "name")
_knowledgeDocument.FileExtension = field.NewString(tableName, "file_extension")
_knowledgeDocument.DocumentType = field.NewInt32(tableName, "document_type")
_knowledgeDocument.URI = field.NewString(tableName, "uri")
_knowledgeDocument.Size = field.NewInt64(tableName, "size")
_knowledgeDocument.SliceCount = field.NewInt64(tableName, "slice_count")
_knowledgeDocument.CharCount = field.NewInt64(tableName, "char_count")
_knowledgeDocument.CreatorID = field.NewInt64(tableName, "creator_id")
_knowledgeDocument.SpaceID = field.NewInt64(tableName, "space_id")
_knowledgeDocument.CreatedAt = field.NewInt64(tableName, "created_at")
_knowledgeDocument.UpdatedAt = field.NewInt64(tableName, "updated_at")
_knowledgeDocument.DeletedAt = field.NewField(tableName, "deleted_at")
_knowledgeDocument.SourceType = field.NewInt32(tableName, "source_type")
_knowledgeDocument.Status = field.NewInt32(tableName, "status")
_knowledgeDocument.FailReason = field.NewString(tableName, "fail_reason")
_knowledgeDocument.ParseRule = field.NewField(tableName, "parse_rule")
_knowledgeDocument.TableInfo = field.NewField(tableName, "table_info")
_knowledgeDocument.fillFieldMap()
return _knowledgeDocument
}
// knowledgeDocument 知识库文档表
type knowledgeDocument struct {
knowledgeDocumentDo
ALL field.Asterisk
ID field.Int64 // 主键ID
KnowledgeID field.Int64 // 所属knowledge的ID
Name field.String // 文档名称
FileExtension field.String // 文档类型, txt/pdf/csv/...
DocumentType field.Int32 // 文档类型: 0:文本 1:表格 2:图片
URI field.String // 资源uri
Size field.Int64 // 文档大小
SliceCount field.Int64 // 分片数量
CharCount field.Int64 // 字符数
CreatorID field.Int64 // 创建者ID
SpaceID field.Int64 // 空间id
CreatedAt field.Int64 // Create Time in Milliseconds
UpdatedAt field.Int64 // Update Time in Milliseconds
DeletedAt field.Field // Delete Time in Milliseconds
SourceType field.Int32 // 0:本地文件上传, 2:自定义文本
Status field.Int32 // 状态
FailReason field.String // 失败原因
ParseRule field.Field // 解析+切片规则
TableInfo field.Field // 表格信息
fieldMap map[string]field.Expr
}
func (k knowledgeDocument) Table(newTableName string) *knowledgeDocument {
k.knowledgeDocumentDo.UseTable(newTableName)
return k.updateTableName(newTableName)
}
func (k knowledgeDocument) As(alias string) *knowledgeDocument {
k.knowledgeDocumentDo.DO = *(k.knowledgeDocumentDo.As(alias).(*gen.DO))
return k.updateTableName(alias)
}
func (k *knowledgeDocument) updateTableName(table string) *knowledgeDocument {
k.ALL = field.NewAsterisk(table)
k.ID = field.NewInt64(table, "id")
k.KnowledgeID = field.NewInt64(table, "knowledge_id")
k.Name = field.NewString(table, "name")
k.FileExtension = field.NewString(table, "file_extension")
k.DocumentType = field.NewInt32(table, "document_type")
k.URI = field.NewString(table, "uri")
k.Size = field.NewInt64(table, "size")
k.SliceCount = field.NewInt64(table, "slice_count")
k.CharCount = field.NewInt64(table, "char_count")
k.CreatorID = field.NewInt64(table, "creator_id")
k.SpaceID = field.NewInt64(table, "space_id")
k.CreatedAt = field.NewInt64(table, "created_at")
k.UpdatedAt = field.NewInt64(table, "updated_at")
k.DeletedAt = field.NewField(table, "deleted_at")
k.SourceType = field.NewInt32(table, "source_type")
k.Status = field.NewInt32(table, "status")
k.FailReason = field.NewString(table, "fail_reason")
k.ParseRule = field.NewField(table, "parse_rule")
k.TableInfo = field.NewField(table, "table_info")
k.fillFieldMap()
return k
}
func (k *knowledgeDocument) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := k.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (k *knowledgeDocument) fillFieldMap() {
k.fieldMap = make(map[string]field.Expr, 19)
k.fieldMap["id"] = k.ID
k.fieldMap["knowledge_id"] = k.KnowledgeID
k.fieldMap["name"] = k.Name
k.fieldMap["file_extension"] = k.FileExtension
k.fieldMap["document_type"] = k.DocumentType
k.fieldMap["uri"] = k.URI
k.fieldMap["size"] = k.Size
k.fieldMap["slice_count"] = k.SliceCount
k.fieldMap["char_count"] = k.CharCount
k.fieldMap["creator_id"] = k.CreatorID
k.fieldMap["space_id"] = k.SpaceID
k.fieldMap["created_at"] = k.CreatedAt
k.fieldMap["updated_at"] = k.UpdatedAt
k.fieldMap["deleted_at"] = k.DeletedAt
k.fieldMap["source_type"] = k.SourceType
k.fieldMap["status"] = k.Status
k.fieldMap["fail_reason"] = k.FailReason
k.fieldMap["parse_rule"] = k.ParseRule
k.fieldMap["table_info"] = k.TableInfo
}
func (k knowledgeDocument) clone(db *gorm.DB) knowledgeDocument {
k.knowledgeDocumentDo.ReplaceConnPool(db.Statement.ConnPool)
return k
}
func (k knowledgeDocument) replaceDB(db *gorm.DB) knowledgeDocument {
k.knowledgeDocumentDo.ReplaceDB(db)
return k
}
type knowledgeDocumentDo struct{ gen.DO }
type IKnowledgeDocumentDo interface {
gen.SubQuery
Debug() IKnowledgeDocumentDo
WithContext(ctx context.Context) IKnowledgeDocumentDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() IKnowledgeDocumentDo
WriteDB() IKnowledgeDocumentDo
As(alias string) gen.Dao
Session(config *gorm.Session) IKnowledgeDocumentDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) IKnowledgeDocumentDo
Not(conds ...gen.Condition) IKnowledgeDocumentDo
Or(conds ...gen.Condition) IKnowledgeDocumentDo
Select(conds ...field.Expr) IKnowledgeDocumentDo
Where(conds ...gen.Condition) IKnowledgeDocumentDo
Order(conds ...field.Expr) IKnowledgeDocumentDo
Distinct(cols ...field.Expr) IKnowledgeDocumentDo
Omit(cols ...field.Expr) IKnowledgeDocumentDo
Join(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentDo
LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentDo
RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentDo
Group(cols ...field.Expr) IKnowledgeDocumentDo
Having(conds ...gen.Condition) IKnowledgeDocumentDo
Limit(limit int) IKnowledgeDocumentDo
Offset(offset int) IKnowledgeDocumentDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDocumentDo
Unscoped() IKnowledgeDocumentDo
Create(values ...*model.KnowledgeDocument) error
CreateInBatches(values []*model.KnowledgeDocument, batchSize int) error
Save(values ...*model.KnowledgeDocument) error
First() (*model.KnowledgeDocument, error)
Take() (*model.KnowledgeDocument, error)
Last() (*model.KnowledgeDocument, error)
Find() ([]*model.KnowledgeDocument, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.KnowledgeDocument, err error)
FindInBatches(result *[]*model.KnowledgeDocument, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.KnowledgeDocument) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) IKnowledgeDocumentDo
Assign(attrs ...field.AssignExpr) IKnowledgeDocumentDo
Joins(fields ...field.RelationField) IKnowledgeDocumentDo
Preload(fields ...field.RelationField) IKnowledgeDocumentDo
FirstOrInit() (*model.KnowledgeDocument, error)
FirstOrCreate() (*model.KnowledgeDocument, error)
FindByPage(offset int, limit int) (result []*model.KnowledgeDocument, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) IKnowledgeDocumentDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (k knowledgeDocumentDo) Debug() IKnowledgeDocumentDo {
return k.withDO(k.DO.Debug())
}
func (k knowledgeDocumentDo) WithContext(ctx context.Context) IKnowledgeDocumentDo {
return k.withDO(k.DO.WithContext(ctx))
}
func (k knowledgeDocumentDo) ReadDB() IKnowledgeDocumentDo {
return k.Clauses(dbresolver.Read)
}
func (k knowledgeDocumentDo) WriteDB() IKnowledgeDocumentDo {
return k.Clauses(dbresolver.Write)
}
func (k knowledgeDocumentDo) Session(config *gorm.Session) IKnowledgeDocumentDo {
return k.withDO(k.DO.Session(config))
}
func (k knowledgeDocumentDo) Clauses(conds ...clause.Expression) IKnowledgeDocumentDo {
return k.withDO(k.DO.Clauses(conds...))
}
func (k knowledgeDocumentDo) Returning(value interface{}, columns ...string) IKnowledgeDocumentDo {
return k.withDO(k.DO.Returning(value, columns...))
}
func (k knowledgeDocumentDo) Not(conds ...gen.Condition) IKnowledgeDocumentDo {
return k.withDO(k.DO.Not(conds...))
}
func (k knowledgeDocumentDo) Or(conds ...gen.Condition) IKnowledgeDocumentDo {
return k.withDO(k.DO.Or(conds...))
}
func (k knowledgeDocumentDo) Select(conds ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Select(conds...))
}
func (k knowledgeDocumentDo) Where(conds ...gen.Condition) IKnowledgeDocumentDo {
return k.withDO(k.DO.Where(conds...))
}
func (k knowledgeDocumentDo) Order(conds ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Order(conds...))
}
func (k knowledgeDocumentDo) Distinct(cols ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Distinct(cols...))
}
func (k knowledgeDocumentDo) Omit(cols ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Omit(cols...))
}
func (k knowledgeDocumentDo) Join(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Join(table, on...))
}
func (k knowledgeDocumentDo) LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.LeftJoin(table, on...))
}
func (k knowledgeDocumentDo) RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.RightJoin(table, on...))
}
func (k knowledgeDocumentDo) Group(cols ...field.Expr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Group(cols...))
}
func (k knowledgeDocumentDo) Having(conds ...gen.Condition) IKnowledgeDocumentDo {
return k.withDO(k.DO.Having(conds...))
}
func (k knowledgeDocumentDo) Limit(limit int) IKnowledgeDocumentDo {
return k.withDO(k.DO.Limit(limit))
}
func (k knowledgeDocumentDo) Offset(offset int) IKnowledgeDocumentDo {
return k.withDO(k.DO.Offset(offset))
}
func (k knowledgeDocumentDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDocumentDo {
return k.withDO(k.DO.Scopes(funcs...))
}
func (k knowledgeDocumentDo) Unscoped() IKnowledgeDocumentDo {
return k.withDO(k.DO.Unscoped())
}
func (k knowledgeDocumentDo) Create(values ...*model.KnowledgeDocument) error {
if len(values) == 0 {
return nil
}
return k.DO.Create(values)
}
func (k knowledgeDocumentDo) CreateInBatches(values []*model.KnowledgeDocument, batchSize int) error {
return k.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (k knowledgeDocumentDo) Save(values ...*model.KnowledgeDocument) error {
if len(values) == 0 {
return nil
}
return k.DO.Save(values)
}
func (k knowledgeDocumentDo) First() (*model.KnowledgeDocument, error) {
if result, err := k.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocument), nil
}
}
func (k knowledgeDocumentDo) Take() (*model.KnowledgeDocument, error) {
if result, err := k.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocument), nil
}
}
func (k knowledgeDocumentDo) Last() (*model.KnowledgeDocument, error) {
if result, err := k.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocument), nil
}
}
func (k knowledgeDocumentDo) Find() ([]*model.KnowledgeDocument, error) {
result, err := k.DO.Find()
return result.([]*model.KnowledgeDocument), err
}
func (k knowledgeDocumentDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.KnowledgeDocument, err error) {
buf := make([]*model.KnowledgeDocument, 0, batchSize)
err = k.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (k knowledgeDocumentDo) FindInBatches(result *[]*model.KnowledgeDocument, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return k.DO.FindInBatches(result, batchSize, fc)
}
func (k knowledgeDocumentDo) Attrs(attrs ...field.AssignExpr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Attrs(attrs...))
}
func (k knowledgeDocumentDo) Assign(attrs ...field.AssignExpr) IKnowledgeDocumentDo {
return k.withDO(k.DO.Assign(attrs...))
}
func (k knowledgeDocumentDo) Joins(fields ...field.RelationField) IKnowledgeDocumentDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Joins(_f))
}
return &k
}
func (k knowledgeDocumentDo) Preload(fields ...field.RelationField) IKnowledgeDocumentDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Preload(_f))
}
return &k
}
func (k knowledgeDocumentDo) FirstOrInit() (*model.KnowledgeDocument, error) {
if result, err := k.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocument), nil
}
}
func (k knowledgeDocumentDo) FirstOrCreate() (*model.KnowledgeDocument, error) {
if result, err := k.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocument), nil
}
}
func (k knowledgeDocumentDo) FindByPage(offset int, limit int) (result []*model.KnowledgeDocument, count int64, err error) {
result, err = k.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = k.Offset(-1).Limit(-1).Count()
return
}
func (k knowledgeDocumentDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = k.Count()
if err != nil {
return
}
err = k.Offset(offset).Limit(limit).Scan(result)
return
}
func (k knowledgeDocumentDo) Scan(result interface{}) (err error) {
return k.DO.Scan(result)
}
func (k knowledgeDocumentDo) Delete(models ...*model.KnowledgeDocument) (result gen.ResultInfo, err error) {
return k.DO.Delete(models)
}
func (k *knowledgeDocumentDo) withDO(do gen.Dao) *knowledgeDocumentDo {
k.DO = *do.(*gen.DO)
return k
}

View File

@@ -0,0 +1,429 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
)
func newKnowledgeDocumentReview(db *gorm.DB, opts ...gen.DOOption) knowledgeDocumentReview {
_knowledgeDocumentReview := knowledgeDocumentReview{}
_knowledgeDocumentReview.knowledgeDocumentReviewDo.UseDB(db, opts...)
_knowledgeDocumentReview.knowledgeDocumentReviewDo.UseModel(&model.KnowledgeDocumentReview{})
tableName := _knowledgeDocumentReview.knowledgeDocumentReviewDo.TableName()
_knowledgeDocumentReview.ALL = field.NewAsterisk(tableName)
_knowledgeDocumentReview.ID = field.NewInt64(tableName, "id")
_knowledgeDocumentReview.KnowledgeID = field.NewInt64(tableName, "knowledge_id")
_knowledgeDocumentReview.SpaceID = field.NewInt64(tableName, "space_id")
_knowledgeDocumentReview.Name = field.NewString(tableName, "name")
_knowledgeDocumentReview.Type = field.NewString(tableName, "type")
_knowledgeDocumentReview.URI = field.NewString(tableName, "uri")
_knowledgeDocumentReview.FormatType = field.NewInt32(tableName, "format_type")
_knowledgeDocumentReview.Status = field.NewInt32(tableName, "status")
_knowledgeDocumentReview.ChunkRespURI = field.NewString(tableName, "chunk_resp_uri")
_knowledgeDocumentReview.DeletedAt = field.NewField(tableName, "deleted_at")
_knowledgeDocumentReview.CreatedAt = field.NewInt64(tableName, "created_at")
_knowledgeDocumentReview.UpdatedAt = field.NewInt64(tableName, "updated_at")
_knowledgeDocumentReview.CreatorID = field.NewInt64(tableName, "creator_id")
_knowledgeDocumentReview.fillFieldMap()
return _knowledgeDocumentReview
}
// knowledgeDocumentReview 文档审阅表
type knowledgeDocumentReview struct {
knowledgeDocumentReviewDo
ALL field.Asterisk
ID field.Int64 // 主键ID
KnowledgeID field.Int64 // knowledge id
SpaceID field.Int64 // 空间id
Name field.String // 文档名称
Type field.String // 文档类型
URI field.String // 资源标识
FormatType field.Int32 // 0 文本, 1 表格, 2 图片
Status field.Int32 // 0 处理中1 已完成2 失败3 失效
ChunkRespURI field.String // 预切片tos资源标识
DeletedAt field.Field // Delete Time in Milliseconds
CreatedAt field.Int64 // Create Time in Milliseconds
UpdatedAt field.Int64 // Update Time in Milliseconds
CreatorID field.Int64 // 创建者ID
fieldMap map[string]field.Expr
}
func (k knowledgeDocumentReview) Table(newTableName string) *knowledgeDocumentReview {
k.knowledgeDocumentReviewDo.UseTable(newTableName)
return k.updateTableName(newTableName)
}
func (k knowledgeDocumentReview) As(alias string) *knowledgeDocumentReview {
k.knowledgeDocumentReviewDo.DO = *(k.knowledgeDocumentReviewDo.As(alias).(*gen.DO))
return k.updateTableName(alias)
}
func (k *knowledgeDocumentReview) updateTableName(table string) *knowledgeDocumentReview {
k.ALL = field.NewAsterisk(table)
k.ID = field.NewInt64(table, "id")
k.KnowledgeID = field.NewInt64(table, "knowledge_id")
k.SpaceID = field.NewInt64(table, "space_id")
k.Name = field.NewString(table, "name")
k.Type = field.NewString(table, "type")
k.URI = field.NewString(table, "uri")
k.FormatType = field.NewInt32(table, "format_type")
k.Status = field.NewInt32(table, "status")
k.ChunkRespURI = field.NewString(table, "chunk_resp_uri")
k.DeletedAt = field.NewField(table, "deleted_at")
k.CreatedAt = field.NewInt64(table, "created_at")
k.UpdatedAt = field.NewInt64(table, "updated_at")
k.CreatorID = field.NewInt64(table, "creator_id")
k.fillFieldMap()
return k
}
func (k *knowledgeDocumentReview) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := k.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (k *knowledgeDocumentReview) fillFieldMap() {
k.fieldMap = make(map[string]field.Expr, 13)
k.fieldMap["id"] = k.ID
k.fieldMap["knowledge_id"] = k.KnowledgeID
k.fieldMap["space_id"] = k.SpaceID
k.fieldMap["name"] = k.Name
k.fieldMap["type"] = k.Type
k.fieldMap["uri"] = k.URI
k.fieldMap["format_type"] = k.FormatType
k.fieldMap["status"] = k.Status
k.fieldMap["chunk_resp_uri"] = k.ChunkRespURI
k.fieldMap["deleted_at"] = k.DeletedAt
k.fieldMap["created_at"] = k.CreatedAt
k.fieldMap["updated_at"] = k.UpdatedAt
k.fieldMap["creator_id"] = k.CreatorID
}
func (k knowledgeDocumentReview) clone(db *gorm.DB) knowledgeDocumentReview {
k.knowledgeDocumentReviewDo.ReplaceConnPool(db.Statement.ConnPool)
return k
}
func (k knowledgeDocumentReview) replaceDB(db *gorm.DB) knowledgeDocumentReview {
k.knowledgeDocumentReviewDo.ReplaceDB(db)
return k
}
type knowledgeDocumentReviewDo struct{ gen.DO }
type IKnowledgeDocumentReviewDo interface {
gen.SubQuery
Debug() IKnowledgeDocumentReviewDo
WithContext(ctx context.Context) IKnowledgeDocumentReviewDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() IKnowledgeDocumentReviewDo
WriteDB() IKnowledgeDocumentReviewDo
As(alias string) gen.Dao
Session(config *gorm.Session) IKnowledgeDocumentReviewDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) IKnowledgeDocumentReviewDo
Not(conds ...gen.Condition) IKnowledgeDocumentReviewDo
Or(conds ...gen.Condition) IKnowledgeDocumentReviewDo
Select(conds ...field.Expr) IKnowledgeDocumentReviewDo
Where(conds ...gen.Condition) IKnowledgeDocumentReviewDo
Order(conds ...field.Expr) IKnowledgeDocumentReviewDo
Distinct(cols ...field.Expr) IKnowledgeDocumentReviewDo
Omit(cols ...field.Expr) IKnowledgeDocumentReviewDo
Join(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentReviewDo
LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentReviewDo
RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentReviewDo
Group(cols ...field.Expr) IKnowledgeDocumentReviewDo
Having(conds ...gen.Condition) IKnowledgeDocumentReviewDo
Limit(limit int) IKnowledgeDocumentReviewDo
Offset(offset int) IKnowledgeDocumentReviewDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDocumentReviewDo
Unscoped() IKnowledgeDocumentReviewDo
Create(values ...*model.KnowledgeDocumentReview) error
CreateInBatches(values []*model.KnowledgeDocumentReview, batchSize int) error
Save(values ...*model.KnowledgeDocumentReview) error
First() (*model.KnowledgeDocumentReview, error)
Take() (*model.KnowledgeDocumentReview, error)
Last() (*model.KnowledgeDocumentReview, error)
Find() ([]*model.KnowledgeDocumentReview, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.KnowledgeDocumentReview, err error)
FindInBatches(result *[]*model.KnowledgeDocumentReview, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.KnowledgeDocumentReview) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) IKnowledgeDocumentReviewDo
Assign(attrs ...field.AssignExpr) IKnowledgeDocumentReviewDo
Joins(fields ...field.RelationField) IKnowledgeDocumentReviewDo
Preload(fields ...field.RelationField) IKnowledgeDocumentReviewDo
FirstOrInit() (*model.KnowledgeDocumentReview, error)
FirstOrCreate() (*model.KnowledgeDocumentReview, error)
FindByPage(offset int, limit int) (result []*model.KnowledgeDocumentReview, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) IKnowledgeDocumentReviewDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (k knowledgeDocumentReviewDo) Debug() IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Debug())
}
func (k knowledgeDocumentReviewDo) WithContext(ctx context.Context) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.WithContext(ctx))
}
func (k knowledgeDocumentReviewDo) ReadDB() IKnowledgeDocumentReviewDo {
return k.Clauses(dbresolver.Read)
}
func (k knowledgeDocumentReviewDo) WriteDB() IKnowledgeDocumentReviewDo {
return k.Clauses(dbresolver.Write)
}
func (k knowledgeDocumentReviewDo) Session(config *gorm.Session) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Session(config))
}
func (k knowledgeDocumentReviewDo) Clauses(conds ...clause.Expression) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Clauses(conds...))
}
func (k knowledgeDocumentReviewDo) Returning(value interface{}, columns ...string) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Returning(value, columns...))
}
func (k knowledgeDocumentReviewDo) Not(conds ...gen.Condition) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Not(conds...))
}
func (k knowledgeDocumentReviewDo) Or(conds ...gen.Condition) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Or(conds...))
}
func (k knowledgeDocumentReviewDo) Select(conds ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Select(conds...))
}
func (k knowledgeDocumentReviewDo) Where(conds ...gen.Condition) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Where(conds...))
}
func (k knowledgeDocumentReviewDo) Order(conds ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Order(conds...))
}
func (k knowledgeDocumentReviewDo) Distinct(cols ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Distinct(cols...))
}
func (k knowledgeDocumentReviewDo) Omit(cols ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Omit(cols...))
}
func (k knowledgeDocumentReviewDo) Join(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Join(table, on...))
}
func (k knowledgeDocumentReviewDo) LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.LeftJoin(table, on...))
}
func (k knowledgeDocumentReviewDo) RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.RightJoin(table, on...))
}
func (k knowledgeDocumentReviewDo) Group(cols ...field.Expr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Group(cols...))
}
func (k knowledgeDocumentReviewDo) Having(conds ...gen.Condition) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Having(conds...))
}
func (k knowledgeDocumentReviewDo) Limit(limit int) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Limit(limit))
}
func (k knowledgeDocumentReviewDo) Offset(offset int) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Offset(offset))
}
func (k knowledgeDocumentReviewDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Scopes(funcs...))
}
func (k knowledgeDocumentReviewDo) Unscoped() IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Unscoped())
}
func (k knowledgeDocumentReviewDo) Create(values ...*model.KnowledgeDocumentReview) error {
if len(values) == 0 {
return nil
}
return k.DO.Create(values)
}
func (k knowledgeDocumentReviewDo) CreateInBatches(values []*model.KnowledgeDocumentReview, batchSize int) error {
return k.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (k knowledgeDocumentReviewDo) Save(values ...*model.KnowledgeDocumentReview) error {
if len(values) == 0 {
return nil
}
return k.DO.Save(values)
}
func (k knowledgeDocumentReviewDo) First() (*model.KnowledgeDocumentReview, error) {
if result, err := k.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentReview), nil
}
}
func (k knowledgeDocumentReviewDo) Take() (*model.KnowledgeDocumentReview, error) {
if result, err := k.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentReview), nil
}
}
func (k knowledgeDocumentReviewDo) Last() (*model.KnowledgeDocumentReview, error) {
if result, err := k.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentReview), nil
}
}
func (k knowledgeDocumentReviewDo) Find() ([]*model.KnowledgeDocumentReview, error) {
result, err := k.DO.Find()
return result.([]*model.KnowledgeDocumentReview), err
}
func (k knowledgeDocumentReviewDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.KnowledgeDocumentReview, err error) {
buf := make([]*model.KnowledgeDocumentReview, 0, batchSize)
err = k.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (k knowledgeDocumentReviewDo) FindInBatches(result *[]*model.KnowledgeDocumentReview, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return k.DO.FindInBatches(result, batchSize, fc)
}
func (k knowledgeDocumentReviewDo) Attrs(attrs ...field.AssignExpr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Attrs(attrs...))
}
func (k knowledgeDocumentReviewDo) Assign(attrs ...field.AssignExpr) IKnowledgeDocumentReviewDo {
return k.withDO(k.DO.Assign(attrs...))
}
func (k knowledgeDocumentReviewDo) Joins(fields ...field.RelationField) IKnowledgeDocumentReviewDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Joins(_f))
}
return &k
}
func (k knowledgeDocumentReviewDo) Preload(fields ...field.RelationField) IKnowledgeDocumentReviewDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Preload(_f))
}
return &k
}
func (k knowledgeDocumentReviewDo) FirstOrInit() (*model.KnowledgeDocumentReview, error) {
if result, err := k.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentReview), nil
}
}
func (k knowledgeDocumentReviewDo) FirstOrCreate() (*model.KnowledgeDocumentReview, error) {
if result, err := k.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentReview), nil
}
}
func (k knowledgeDocumentReviewDo) FindByPage(offset int, limit int) (result []*model.KnowledgeDocumentReview, count int64, err error) {
result, err = k.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = k.Offset(-1).Limit(-1).Count()
return
}
func (k knowledgeDocumentReviewDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = k.Count()
if err != nil {
return
}
err = k.Offset(offset).Limit(limit).Scan(result)
return
}
func (k knowledgeDocumentReviewDo) Scan(result interface{}) (err error) {
return k.DO.Scan(result)
}
func (k knowledgeDocumentReviewDo) Delete(models ...*model.KnowledgeDocumentReview) (result gen.ResultInfo, err error) {
return k.DO.Delete(models)
}
func (k *knowledgeDocumentReviewDo) withDO(do gen.Dao) *knowledgeDocumentReviewDo {
k.DO = *do.(*gen.DO)
return k
}

View File

@@ -0,0 +1,429 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
)
func newKnowledgeDocumentSlice(db *gorm.DB, opts ...gen.DOOption) knowledgeDocumentSlice {
_knowledgeDocumentSlice := knowledgeDocumentSlice{}
_knowledgeDocumentSlice.knowledgeDocumentSliceDo.UseDB(db, opts...)
_knowledgeDocumentSlice.knowledgeDocumentSliceDo.UseModel(&model.KnowledgeDocumentSlice{})
tableName := _knowledgeDocumentSlice.knowledgeDocumentSliceDo.TableName()
_knowledgeDocumentSlice.ALL = field.NewAsterisk(tableName)
_knowledgeDocumentSlice.ID = field.NewInt64(tableName, "id")
_knowledgeDocumentSlice.KnowledgeID = field.NewInt64(tableName, "knowledge_id")
_knowledgeDocumentSlice.DocumentID = field.NewInt64(tableName, "document_id")
_knowledgeDocumentSlice.Content = field.NewString(tableName, "content")
_knowledgeDocumentSlice.Sequence = field.NewFloat64(tableName, "sequence")
_knowledgeDocumentSlice.CreatedAt = field.NewInt64(tableName, "created_at")
_knowledgeDocumentSlice.UpdatedAt = field.NewInt64(tableName, "updated_at")
_knowledgeDocumentSlice.DeletedAt = field.NewField(tableName, "deleted_at")
_knowledgeDocumentSlice.CreatorID = field.NewInt64(tableName, "creator_id")
_knowledgeDocumentSlice.SpaceID = field.NewInt64(tableName, "space_id")
_knowledgeDocumentSlice.Status = field.NewInt32(tableName, "status")
_knowledgeDocumentSlice.FailReason = field.NewString(tableName, "fail_reason")
_knowledgeDocumentSlice.Hit = field.NewInt64(tableName, "hit")
_knowledgeDocumentSlice.fillFieldMap()
return _knowledgeDocumentSlice
}
// knowledgeDocumentSlice 知识库文件切片表
type knowledgeDocumentSlice struct {
knowledgeDocumentSliceDo
ALL field.Asterisk
ID field.Int64 // 主键ID
KnowledgeID field.Int64 // knowledge id
DocumentID field.Int64 // document id
Content field.String // 切片内容
Sequence field.Float64 // 切片顺序号, 从1开始
CreatedAt field.Int64 // Create Time in Milliseconds
UpdatedAt field.Int64 // Update Time in Milliseconds
DeletedAt field.Field // Delete Time in Milliseconds
CreatorID field.Int64 // 创建者ID
SpaceID field.Int64 // 空间ID
Status field.Int32 // 状态
FailReason field.String // 失败原因
Hit field.Int64 // 命中次数
fieldMap map[string]field.Expr
}
func (k knowledgeDocumentSlice) Table(newTableName string) *knowledgeDocumentSlice {
k.knowledgeDocumentSliceDo.UseTable(newTableName)
return k.updateTableName(newTableName)
}
func (k knowledgeDocumentSlice) As(alias string) *knowledgeDocumentSlice {
k.knowledgeDocumentSliceDo.DO = *(k.knowledgeDocumentSliceDo.As(alias).(*gen.DO))
return k.updateTableName(alias)
}
func (k *knowledgeDocumentSlice) updateTableName(table string) *knowledgeDocumentSlice {
k.ALL = field.NewAsterisk(table)
k.ID = field.NewInt64(table, "id")
k.KnowledgeID = field.NewInt64(table, "knowledge_id")
k.DocumentID = field.NewInt64(table, "document_id")
k.Content = field.NewString(table, "content")
k.Sequence = field.NewFloat64(table, "sequence")
k.CreatedAt = field.NewInt64(table, "created_at")
k.UpdatedAt = field.NewInt64(table, "updated_at")
k.DeletedAt = field.NewField(table, "deleted_at")
k.CreatorID = field.NewInt64(table, "creator_id")
k.SpaceID = field.NewInt64(table, "space_id")
k.Status = field.NewInt32(table, "status")
k.FailReason = field.NewString(table, "fail_reason")
k.Hit = field.NewInt64(table, "hit")
k.fillFieldMap()
return k
}
func (k *knowledgeDocumentSlice) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := k.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (k *knowledgeDocumentSlice) fillFieldMap() {
k.fieldMap = make(map[string]field.Expr, 13)
k.fieldMap["id"] = k.ID
k.fieldMap["knowledge_id"] = k.KnowledgeID
k.fieldMap["document_id"] = k.DocumentID
k.fieldMap["content"] = k.Content
k.fieldMap["sequence"] = k.Sequence
k.fieldMap["created_at"] = k.CreatedAt
k.fieldMap["updated_at"] = k.UpdatedAt
k.fieldMap["deleted_at"] = k.DeletedAt
k.fieldMap["creator_id"] = k.CreatorID
k.fieldMap["space_id"] = k.SpaceID
k.fieldMap["status"] = k.Status
k.fieldMap["fail_reason"] = k.FailReason
k.fieldMap["hit"] = k.Hit
}
func (k knowledgeDocumentSlice) clone(db *gorm.DB) knowledgeDocumentSlice {
k.knowledgeDocumentSliceDo.ReplaceConnPool(db.Statement.ConnPool)
return k
}
func (k knowledgeDocumentSlice) replaceDB(db *gorm.DB) knowledgeDocumentSlice {
k.knowledgeDocumentSliceDo.ReplaceDB(db)
return k
}
type knowledgeDocumentSliceDo struct{ gen.DO }
type IKnowledgeDocumentSliceDo interface {
gen.SubQuery
Debug() IKnowledgeDocumentSliceDo
WithContext(ctx context.Context) IKnowledgeDocumentSliceDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() IKnowledgeDocumentSliceDo
WriteDB() IKnowledgeDocumentSliceDo
As(alias string) gen.Dao
Session(config *gorm.Session) IKnowledgeDocumentSliceDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) IKnowledgeDocumentSliceDo
Not(conds ...gen.Condition) IKnowledgeDocumentSliceDo
Or(conds ...gen.Condition) IKnowledgeDocumentSliceDo
Select(conds ...field.Expr) IKnowledgeDocumentSliceDo
Where(conds ...gen.Condition) IKnowledgeDocumentSliceDo
Order(conds ...field.Expr) IKnowledgeDocumentSliceDo
Distinct(cols ...field.Expr) IKnowledgeDocumentSliceDo
Omit(cols ...field.Expr) IKnowledgeDocumentSliceDo
Join(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentSliceDo
LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentSliceDo
RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentSliceDo
Group(cols ...field.Expr) IKnowledgeDocumentSliceDo
Having(conds ...gen.Condition) IKnowledgeDocumentSliceDo
Limit(limit int) IKnowledgeDocumentSliceDo
Offset(offset int) IKnowledgeDocumentSliceDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDocumentSliceDo
Unscoped() IKnowledgeDocumentSliceDo
Create(values ...*model.KnowledgeDocumentSlice) error
CreateInBatches(values []*model.KnowledgeDocumentSlice, batchSize int) error
Save(values ...*model.KnowledgeDocumentSlice) error
First() (*model.KnowledgeDocumentSlice, error)
Take() (*model.KnowledgeDocumentSlice, error)
Last() (*model.KnowledgeDocumentSlice, error)
Find() ([]*model.KnowledgeDocumentSlice, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.KnowledgeDocumentSlice, err error)
FindInBatches(result *[]*model.KnowledgeDocumentSlice, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.KnowledgeDocumentSlice) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) IKnowledgeDocumentSliceDo
Assign(attrs ...field.AssignExpr) IKnowledgeDocumentSliceDo
Joins(fields ...field.RelationField) IKnowledgeDocumentSliceDo
Preload(fields ...field.RelationField) IKnowledgeDocumentSliceDo
FirstOrInit() (*model.KnowledgeDocumentSlice, error)
FirstOrCreate() (*model.KnowledgeDocumentSlice, error)
FindByPage(offset int, limit int) (result []*model.KnowledgeDocumentSlice, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) IKnowledgeDocumentSliceDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (k knowledgeDocumentSliceDo) Debug() IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Debug())
}
func (k knowledgeDocumentSliceDo) WithContext(ctx context.Context) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.WithContext(ctx))
}
func (k knowledgeDocumentSliceDo) ReadDB() IKnowledgeDocumentSliceDo {
return k.Clauses(dbresolver.Read)
}
func (k knowledgeDocumentSliceDo) WriteDB() IKnowledgeDocumentSliceDo {
return k.Clauses(dbresolver.Write)
}
func (k knowledgeDocumentSliceDo) Session(config *gorm.Session) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Session(config))
}
func (k knowledgeDocumentSliceDo) Clauses(conds ...clause.Expression) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Clauses(conds...))
}
func (k knowledgeDocumentSliceDo) Returning(value interface{}, columns ...string) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Returning(value, columns...))
}
func (k knowledgeDocumentSliceDo) Not(conds ...gen.Condition) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Not(conds...))
}
func (k knowledgeDocumentSliceDo) Or(conds ...gen.Condition) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Or(conds...))
}
func (k knowledgeDocumentSliceDo) Select(conds ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Select(conds...))
}
func (k knowledgeDocumentSliceDo) Where(conds ...gen.Condition) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Where(conds...))
}
func (k knowledgeDocumentSliceDo) Order(conds ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Order(conds...))
}
func (k knowledgeDocumentSliceDo) Distinct(cols ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Distinct(cols...))
}
func (k knowledgeDocumentSliceDo) Omit(cols ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Omit(cols...))
}
func (k knowledgeDocumentSliceDo) Join(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Join(table, on...))
}
func (k knowledgeDocumentSliceDo) LeftJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.LeftJoin(table, on...))
}
func (k knowledgeDocumentSliceDo) RightJoin(table schema.Tabler, on ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.RightJoin(table, on...))
}
func (k knowledgeDocumentSliceDo) Group(cols ...field.Expr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Group(cols...))
}
func (k knowledgeDocumentSliceDo) Having(conds ...gen.Condition) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Having(conds...))
}
func (k knowledgeDocumentSliceDo) Limit(limit int) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Limit(limit))
}
func (k knowledgeDocumentSliceDo) Offset(offset int) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Offset(offset))
}
func (k knowledgeDocumentSliceDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Scopes(funcs...))
}
func (k knowledgeDocumentSliceDo) Unscoped() IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Unscoped())
}
func (k knowledgeDocumentSliceDo) Create(values ...*model.KnowledgeDocumentSlice) error {
if len(values) == 0 {
return nil
}
return k.DO.Create(values)
}
func (k knowledgeDocumentSliceDo) CreateInBatches(values []*model.KnowledgeDocumentSlice, batchSize int) error {
return k.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (k knowledgeDocumentSliceDo) Save(values ...*model.KnowledgeDocumentSlice) error {
if len(values) == 0 {
return nil
}
return k.DO.Save(values)
}
func (k knowledgeDocumentSliceDo) First() (*model.KnowledgeDocumentSlice, error) {
if result, err := k.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentSlice), nil
}
}
func (k knowledgeDocumentSliceDo) Take() (*model.KnowledgeDocumentSlice, error) {
if result, err := k.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentSlice), nil
}
}
func (k knowledgeDocumentSliceDo) Last() (*model.KnowledgeDocumentSlice, error) {
if result, err := k.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentSlice), nil
}
}
func (k knowledgeDocumentSliceDo) Find() ([]*model.KnowledgeDocumentSlice, error) {
result, err := k.DO.Find()
return result.([]*model.KnowledgeDocumentSlice), err
}
func (k knowledgeDocumentSliceDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.KnowledgeDocumentSlice, err error) {
buf := make([]*model.KnowledgeDocumentSlice, 0, batchSize)
err = k.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (k knowledgeDocumentSliceDo) FindInBatches(result *[]*model.KnowledgeDocumentSlice, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return k.DO.FindInBatches(result, batchSize, fc)
}
func (k knowledgeDocumentSliceDo) Attrs(attrs ...field.AssignExpr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Attrs(attrs...))
}
func (k knowledgeDocumentSliceDo) Assign(attrs ...field.AssignExpr) IKnowledgeDocumentSliceDo {
return k.withDO(k.DO.Assign(attrs...))
}
func (k knowledgeDocumentSliceDo) Joins(fields ...field.RelationField) IKnowledgeDocumentSliceDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Joins(_f))
}
return &k
}
func (k knowledgeDocumentSliceDo) Preload(fields ...field.RelationField) IKnowledgeDocumentSliceDo {
for _, _f := range fields {
k = *k.withDO(k.DO.Preload(_f))
}
return &k
}
func (k knowledgeDocumentSliceDo) FirstOrInit() (*model.KnowledgeDocumentSlice, error) {
if result, err := k.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentSlice), nil
}
}
func (k knowledgeDocumentSliceDo) FirstOrCreate() (*model.KnowledgeDocumentSlice, error) {
if result, err := k.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.KnowledgeDocumentSlice), nil
}
}
func (k knowledgeDocumentSliceDo) FindByPage(offset int, limit int) (result []*model.KnowledgeDocumentSlice, count int64, err error) {
result, err = k.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = k.Offset(-1).Limit(-1).Count()
return
}
func (k knowledgeDocumentSliceDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = k.Count()
if err != nil {
return
}
err = k.Offset(offset).Limit(limit).Scan(result)
return
}
func (k knowledgeDocumentSliceDo) Scan(result interface{}) (err error) {
return k.DO.Scan(result)
}
func (k knowledgeDocumentSliceDo) Delete(models ...*model.KnowledgeDocumentSlice) (result gen.ResultInfo, err error) {
return k.DO.Delete(models)
}
func (k *knowledgeDocumentSliceDo) withDO(do gen.Dao) *knowledgeDocumentSliceDo {
k.DO = *do.(*gen.DO)
return k
}