This commit is contained in:
Liang Ding 2022-11-02 15:36:48 +08:00
parent 0ea19f0d9d
commit 11f67cab71
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
3 changed files with 23 additions and 5 deletions

View file

@ -23,7 +23,7 @@ type Sync struct {
Synced int64 `json:"synced"` // 最近同步时间
Stat string `json:"stat"` // 最近同步统计信息
GenerateConflictDoc bool `json:"generateConflictDoc"` // 云端同步冲突时是否生成冲突文档
Provider int `json:"provider"` // 云端存储服务提供者0思源官方1第三方对象存储服务
Provider int `json:"provider"` // 云端存储服务提供者0思源官方1第三方七牛云2S3 协议对象存储
OSS *OSS `json:"oss"` // 对象存储服务配置
}
@ -33,7 +33,7 @@ func NewSync() *Sync {
Enabled: false,
Mode: 1,
GenerateConflictDoc: false,
Provider: 0,
Provider: ProviderSiYuan,
}
}
@ -44,3 +44,9 @@ type OSS struct {
Regin string `json:"regin"` // 存储区域
Bucket string `json:"bucket"` // 存储空间
}
const (
ProviderSiYuan = 0
ProviderQiniu = 1
ProviderS3 = 2
)

View file

@ -242,6 +242,9 @@ func InitConf() {
if 0 == Conf.Sync.Mode {
Conf.Sync.Mode = 1
}
if nil == Conf.Sync.OSS {
Conf.Sync.OSS = &conf.OSS{}
}
if nil == Conf.Api {
Conf.Api = conf.NewAPI()

View file

@ -41,6 +41,7 @@ import (
"github.com/siyuan-note/httpclient"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/cache"
"github.com/siyuan-note/siyuan/kernel/conf"
"github.com/siyuan-note/siyuan/kernel/sql"
"github.com/siyuan-note/siyuan/kernel/treenode"
"github.com/siyuan-note/siyuan/kernel/util"
@ -816,12 +817,20 @@ func newRepository() (ret *dejavu.Repo, err error) {
return
}
// TODO: 数据同步支持接入第三方对象存储服务 https://github.com/siyuan-note/siyuan/issues/6426
cloudSiYuan := &cloud.SiYuan{BaseCloud: &cloud.BaseCloud{Conf: cloudConf}}
var cloudRepo cloud.Cloud
switch Conf.Sync.Provider {
case conf.ProviderSiYuan:
cloudRepo = &cloud.SiYuan{BaseCloud: &cloud.BaseCloud{Conf: cloudConf}}
case conf.ProviderQiniu:
cloudRepo = &cloud.Qiniu{BaseCloud: &cloud.BaseCloud{Conf: cloudConf}}
default:
err = fmt.Errorf("unknown cloud provider [%d]", Conf.Sync.Provider)
return
}
ignoreLines := getIgnoreLines()
ignoreLines = append(ignoreLines, "/.siyuan/conf.json") // 忽略旧版同步配置
ret, err = dejavu.NewRepo(util.DataDir, util.RepoDir, util.HistoryDir, util.TempDir, Conf.Repo.Key, ignoreLines, cloudSiYuan)
ret, err = dejavu.NewRepo(util.DataDir, util.RepoDir, util.HistoryDir, util.TempDir, Conf.Repo.Key, ignoreLines, cloudRepo)
if nil != err {
logging.LogErrorf("init data repo failed: %s", err)
}