PandaWiki/backend/repo/pg/wechat.go

42 lines
1.2 KiB
Go

package pg
import (
"context"
"github.com/chaitin/panda-wiki/domain"
"github.com/chaitin/panda-wiki/log"
"github.com/chaitin/panda-wiki/store/pg"
)
type WechatRepository struct {
db *pg.DB
logger *log.Logger
}
func NewWechatRepository(db *pg.DB, logger *log.Logger) *WechatRepository {
return &WechatRepository{db: db, logger: logger.WithModule("repo.pg.wechat")}
}
func (r *WechatRepository) GetWechatStatic(ctx context.Context, kbID string, appType domain.AppType) (*domain.WechatStatic, error) {
var wechatStatic domain.WechatStatic
if err := r.db.WithContext(ctx).Model(&domain.App{}).
Where("kb_id = ? AND type = ?", kbID, appType).
Joins("join knowledge_bases kb on kb.id = kb_id ").
Select("apps.settings ->>'icon' as image_path", "kb.access_settings ->>'base_url' as base_url").
Find(&wechatStatic).Error; err != nil {
return nil, err
}
return &wechatStatic, nil
}
func (r *WechatRepository) GetWechatBaseURL(ctx context.Context, kbID string) (string, error) {
var baseUrl string
if err := r.db.WithContext(ctx).Model(&domain.KnowledgeBase{}).
Where("id = ?", kbID).
Select("access_settings ->>'base_url'").
First(&baseUrl).Error; err != nil {
return "", err
}
return baseUrl, nil
}