feat: manually mirror opencoze's code from bytedance
Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
180
backend/domain/knowledge/internal/dal/dao/knowledge.go
Normal file
180
backend/domain/knowledge/internal/dal/dao/knowledge.go
Normal 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
|
||||
}
|
||||
197
backend/domain/knowledge/internal/dal/dao/knowledge_document.go
Normal file
197
backend/domain/knowledge/internal/dal/dao/knowledge_document.go
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
}
|
||||
87
backend/domain/knowledge/internal/dal/dao/knowledge_test.go
Normal file
87
backend/domain/knowledge/internal/dal/dao/knowledge_test.go
Normal 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")
|
||||
})
|
||||
}
|
||||
32
backend/domain/knowledge/internal/dal/model/knowledge.gen.go
Normal file
32
backend/domain/knowledge/internal/dal/model/knowledge.gen.go
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
14
backend/domain/knowledge/internal/dal/model/progress.go
Normal file
14
backend/domain/knowledge/internal/dal/model/progress.go
Normal 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
|
||||
}
|
||||
8
backend/domain/knowledge/internal/dal/model/strategy.go
Normal file
8
backend/domain/knowledge/internal/dal/model/strategy.go
Normal 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"`
|
||||
}
|
||||
127
backend/domain/knowledge/internal/dal/query/gen.go
Normal file
127
backend/domain/knowledge/internal/dal/query/gen.go
Normal 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
|
||||
}
|
||||
425
backend/domain/knowledge/internal/dal/query/knowledge.gen.go
Normal file
425
backend/domain/knowledge/internal/dal/query/knowledge.gen.go
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user