From f46b52b6ba989e29920393b0a271aa4ba7c6e8de Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Sat, 16 Nov 2019 16:49:03 +0800 Subject: [PATCH] Feat: support sqlite --- .gitignore | 1 + models/init.go | 5 +++-- models/migration.go | 5 ++++- pkg/filesystem/filesystem.go | 7 +++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 482983f..ebff2af 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.dll *.so *.dylib +*.db # Test binary, build with `go test -c` *.test diff --git a/models/init.go b/models/init.go index 6cceef8..a25d3b9 100644 --- a/models/init.go +++ b/models/init.go @@ -8,12 +8,13 @@ import ( "time" _ "github.com/jinzhu/gorm/dialects/mysql" + _ "github.com/jinzhu/gorm/dialects/sqlite" ) // DB 数据库链接单例 var DB *gorm.DB -// Database 初始化 MySQL 链接 +// Init 初始化 MySQL 链接 func Init() { util.Log().Info("初始化数据库连接") @@ -22,7 +23,7 @@ func Init() { err error ) if conf.DatabaseConfig.Type == "UNSET" { - //TODO 使用内置SQLite数据库 + db, err = gorm.Open("sqlite3", "cloudreve.db") } else { db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("%s:%s@(%s)/%s?charset=utf8&parseTime=True&loc=Local", conf.DatabaseConfig.User, diff --git a/models/migration.go b/models/migration.go index 865914c..c009a9b 100644 --- a/models/migration.go +++ b/models/migration.go @@ -25,7 +25,10 @@ func migration() { util.Log().Info("开始进行数据库自动迁移...") // 自动迁移模式 - DB.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{}, &Setting{}, &Group{}, &Policy{}, &Folder{}, &File{}) + if conf.DatabaseConfig.Type == "mysql" { + DB = DB.Set("gorm:table_options", "ENGINE=InnoDB") + } + DB.AutoMigrate(&User{}, &Setting{}, &Group{}, &Policy{}, &Folder{}, &File{}) // 创建初始存储策略 addDefaultPolicy() diff --git a/pkg/filesystem/filesystem.go b/pkg/filesystem/filesystem.go index e238147..1041d05 100644 --- a/pkg/filesystem/filesystem.go +++ b/pkg/filesystem/filesystem.go @@ -37,6 +37,13 @@ type FileSystem struct { } +// NewFileSystem 初始化一个文件系统 +func NewFileSystem(user *model.User) *FileSystem { + return &FileSystem{ + User: user, + } +} + // Upload 上传文件 func (fs *FileSystem) Upload(file FileData) (err error) { err = fs.BeforeUpload(fs, file)