fix(migration):replace constant variable

pull/1600/head
YogeLiu 3 years ago
parent 8dafb4f40a
commit 8b18d21080

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

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

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

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

Loading…
Cancel
Save