fix(migration):replace constant variable

This commit is contained in:
YogeLiu 2023-01-07 23:00:24 +08:00
parent 8dafb4f40a
commit 8b18d21080
4 changed files with 38 additions and 11 deletions

View file

@ -2,6 +2,7 @@ package model
import (
"encoding/json"
"github.com/jinzhu/gorm"
)
@ -80,3 +81,9 @@ func (group *Group) SerializePolicyList() (err error) {
group.Options = string(optionsValue)
return err
}
func GetFristGroup() (Group, error) {
var group Group
err := DB.First(&group).Error
return group, err
}

View file

@ -2,6 +2,10 @@ package model
import (
"context"
"fmt"
"sort"
"strings"
"github.com/cloudreve/Cloudreve/v3/models/scripts/invoker"
"github.com/cloudreve/Cloudreve/v3/pkg/cache"
"github.com/cloudreve/Cloudreve/v3/pkg/conf"
@ -9,8 +13,6 @@ import (
"github.com/fatih/color"
"github.com/hashicorp/go-version"
"github.com/jinzhu/gorm"
"sort"
"strings"
)
// 是否需要迁移
@ -46,11 +48,22 @@ func migration() {
// 创建初始存储策略
addDefaultPolicy()
// 获取第一个存储策略
policy, err := GetFirstPolicy()
if err != nil {
util.Log().Panic(fmt.Sprintf("Failed to get frist policy: %v", err))
}
// 创建初始用户组
addDefaultGroups()
addDefaultGroups(policy.ID)
group, err := GetFristGroup()
if err != nil {
util.Log().Panic(fmt.Sprintf("Failed to get frist group: %v", err))
}
// 创建初始管理员账户
addDefaultUser()
addDefaultUser(group.ID)
// 创建初始节点
addDefaultNode()
@ -93,13 +106,13 @@ func addDefaultSettings() {
}
}
func addDefaultGroups() {
func addDefaultGroups(pID uint) {
_, err := GetGroupByID(1)
// 未找到初始管理组时,则创建
if gorm.IsRecordNotFoundError(err) {
defaultAdminGroup := Group{
Name: "Admin",
PolicyList: []uint{1},
PolicyList: []uint{pID},
MaxStorage: 1 * 1024 * 1024 * 1024,
ShareEnabled: true,
WebDAVEnabled: true,
@ -124,7 +137,7 @@ func addDefaultGroups() {
if gorm.IsRecordNotFoundError(err) {
defaultAdminGroup := Group{
Name: "User",
PolicyList: []uint{1},
PolicyList: []uint{pID},
MaxStorage: 1 * 1024 * 1024 * 1024,
ShareEnabled: true,
WebDAVEnabled: true,
@ -158,7 +171,7 @@ func addDefaultGroups() {
}
}
func addDefaultUser() {
func addDefaultUser(gID uint) {
_, err := GetUserByID(1)
password := util.RandStringRunes(8)
@ -168,7 +181,7 @@ func addDefaultUser() {
defaultUser.Email = "admin@cloudreve.org"
defaultUser.Nick = "admin"
defaultUser.Status = Active
defaultUser.GroupID = 1
defaultUser.GroupID = gID
err := defaultUser.SetPassword(password)
if err != nil {
util.Log().Panic("Failed to create password: %s", err)

View file

@ -3,13 +3,14 @@ package model
import (
"encoding/gob"
"encoding/json"
"github.com/gofrs/uuid"
"path"
"path/filepath"
"strconv"
"strings"
"time"
"github.com/gofrs/uuid"
"github.com/cloudreve/Cloudreve/v3/pkg/cache"
"github.com/cloudreve/Cloudreve/v3/pkg/util"
"github.com/jinzhu/gorm"
@ -106,6 +107,12 @@ func GetPolicyByID(ID interface{}) (Policy, error) {
return policy, result.Error
}
func GetFirstPolicy() (Policy, error) {
var policy Policy
err := DB.First(&policy).Error
return policy, err
}
// AfterFind 找到存储策略后的钩子
func (policy *Policy) AfterFind() (err error) {
// 解析存储策略设置到OptionsSerialized

View file

@ -198,7 +198,7 @@ func (user *User) AfterFind() (err error) {
return err
}
//SerializeOptions 将序列后的Option写入到数据库字段
// SerializeOptions 将序列后的Option写入到数据库字段
func (user *User) SerializeOptions() (err error) {
optionsValue, err := json.Marshal(&user.OptionsSerialized)
user.Options = string(optionsValue)