migrate from github

This commit is contained in:
2026-07-15 22:42:31 +08:00
commit 3ad559f05e
262 changed files with 21637 additions and 0 deletions
@@ -0,0 +1,92 @@
package document_repo
import (
"context"
cache_loader "github.com/XingfenD/yoresee_doc/internal/cache"
"github.com/XingfenD/yoresee_doc/internal/model"
"github.com/XingfenD/yoresee_doc/pkg/key"
"github.com/redis/go-redis/v9"
"gorm.io/gorm"
)
type DocumentRepository struct {
db *gorm.DB
redis *redis.Client
Loader cache_loader.Loader
}
func NewDocumentRepository(db *gorm.DB, redis *redis.Client) *DocumentRepository {
return &DocumentRepository{
db: db,
redis: redis,
Loader: *cache_loader.NewLoader(redis),
}
}
type DocumentDeleteOperation struct {
repo *DocumentRepository
id int64
tx *gorm.DB
ctx context.Context
}
func (r *DocumentRepository) Delete(id int64) *DocumentDeleteOperation {
return &DocumentDeleteOperation{
repo: r,
id: id,
ctx: context.Background(),
}
}
func (op *DocumentDeleteOperation) WithTx(tx *gorm.DB) *DocumentDeleteOperation {
op.tx = tx
return op
}
func (op *DocumentDeleteOperation) WithContext(ctx context.Context) *DocumentDeleteOperation {
op.ctx = ctx
return op
}
func (op *DocumentDeleteOperation) Exec() error {
var doc model.Document
var db *gorm.DB
var err error
if op.tx != nil {
db = op.tx
} else {
db = op.repo.db
}
if err := db.First(&doc, op.id).Error; err != nil {
return err
}
if op.tx == nil {
db = db.Begin()
defer func() {
if err != nil {
db.Rollback()
} else {
db.Commit()
}
}()
}
if err := db.Delete(&model.Document{}, op.id).Error; err != nil {
return err
}
if op.tx == nil {
docCacheKey := key.KeyModelByExternalID(key.KeyObjectTypeEnum_Doc, doc.ExternalID)
if err := op.repo.redis.Del(op.ctx, docCacheKey).Err(); err != nil {
}
if err := op.repo.BumpSubtreeVersionsByPath(op.ctx, doc.Path); err != nil {
}
}
return nil
}