修改表结构

This commit is contained in:
bjdgyc 2021-07-21 13:42:32 +08:00
parent 712f57940c
commit 88a3d35784
3 changed files with 36 additions and 33 deletions

View File

@ -1,8 +1,6 @@
package dbdata package dbdata
import ( import (
"encoding/json"
"github.com/bjdgyc/anylink/base" "github.com/bjdgyc/anylink/base"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq" _ "github.com/lib/pq"
@ -41,17 +39,24 @@ func initData() {
) )
// 判断是否初次使用 // 判断是否初次使用
s := &Setting{} install := &SettingInstall{}
err = One("name", InstallName, s) err = SettingGet(install)
if err == nil && s.Data == InstallData {
if err == nil && install.Installed {
// 已经安装过 // 已经安装过
return return
} }
// 发生错误
if err != ErrNotFound {
base.Fatal(err)
}
err = addInitData() err = addInitData()
if err != nil { if err != nil {
base.Fatal(err) base.Fatal(err)
} }
} }
func addInitData() error { func addInitData() error {
@ -74,9 +79,7 @@ func addInitData() error {
From: "vpn@xx.com", From: "vpn@xx.com",
Encryption: "None", Encryption: "None",
} }
v, _ := json.Marshal(smtp) err = SettingSessAdd(sess, smtp)
s := &Setting{Name: StructName(smtp), Data: string(v)}
_, err = sess.InsertOne(s)
if err != nil { if err != nil {
return err return err
} }
@ -87,16 +90,14 @@ func addInitData() error {
Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为", Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为",
AccountMail: accountMail, AccountMail: accountMail,
} }
v, _ = json.Marshal(other) err = SettingSessAdd(sess, other)
s = &Setting{Name: StructName(other), Data: string(v)}
_, err = sess.InsertOne(s)
if err != nil { if err != nil {
return err return err
} }
// Install // Install
install := &Setting{Name: InstallName, Data: InstallData} install := &SettingInstall{Installed: true}
_, err = sess.InsertOne(install) err = SettingSessAdd(sess, install)
if err != nil { if err != nil {
return err return err
} }

View File

@ -3,12 +3,12 @@ package dbdata
import ( import (
"encoding/json" "encoding/json"
"reflect" "reflect"
"xorm.io/xorm"
) )
const ( type SettingInstall struct {
InstallName = "Install" Installed bool `json:"installed"`
InstallData = "OK" }
)
type SettingSmtp struct { type SettingSmtp struct {
Host string `json:"host"` Host string `json:"host"`
@ -36,29 +36,30 @@ func StructName(data interface{}) string {
return name return name
} }
func SettingAdd(data interface{}) error { func SettingSessAdd(sess *xorm.Session, data interface{}) error {
name := StructName(data) name := StructName(data)
v, _ := json.Marshal(data) v, _ := json.Marshal(data)
s := Setting{Name: name, Data: string(v)} s := &Setting{Name: name, Data: v}
err := Add(&s) _, err := sess.InsertOne(s)
return err return err
} }
func SettingSet(data interface{}) error { func SettingSet(data interface{}) error {
name := StructName(data) name := StructName(data)
v, _ := json.Marshal(data) v, _ := json.Marshal(data)
s := Setting{Data: string(v)} s := &Setting{Data: v}
err := Update("name", name, &s) err := Update("name", name, s)
return err return err
} }
func SettingGet(data interface{}) error { func SettingGet(data interface{}) error {
name := StructName(data) name := StructName(data)
s := Setting{Name: name} s := &Setting{Name: name}
err := One("name", name, &s) err := One("name", name, s)
if err != nil { if err != nil {
return err return err
} }
err = json.Unmarshal([]byte(s.Data), data) err = json.Unmarshal(s.Data, data)
return err return err
} }

View File

@ -1,12 +1,13 @@
package dbdata package dbdata
import ( import (
"encoding/json"
"time" "time"
) )
type Group struct { type Group struct {
Id int `json:"id" xorm:"pk autoincr not null"` Id int `json:"id" xorm:"pk autoincr not null"`
Name string `json:"name" xorm:"varchar(60) not null unique(inx_name)"` Name string `json:"name" xorm:"varchar(60) not null unique"`
Note string `json:"note" xorm:"varchar(255)"` Note string `json:"note" xorm:"varchar(255)"`
AllowLan bool `json:"allow_lan" xorm:"Bool"` AllowLan bool `json:"allow_lan" xorm:"Bool"`
ClientDns []ValData `json:"client_dns" xorm:"Text"` ClientDns []ValData `json:"client_dns" xorm:"Text"`
@ -21,7 +22,7 @@ type Group struct {
type User struct { type User struct {
Id int `json:"id" xorm:"pk autoincr not null"` Id int `json:"id" xorm:"pk autoincr not null"`
Username string `json:"username" xorm:"varchar(60) not null unique(inx_username)"` Username string `json:"username" xorm:"varchar(60) not null unique"`
Nickname string `json:"nickname" xorm:"varchar(255)"` Nickname string `json:"nickname" xorm:"varchar(255)"`
Email string `json:"email" xorm:"varchar(255)"` Email string `json:"email" xorm:"varchar(255)"`
// Password string `json:"password"` // Password string `json:"password"`
@ -37,8 +38,8 @@ type User struct {
type IpMap struct { type IpMap struct {
Id int `json:"id" xorm:"pk autoincr not null"` Id int `json:"id" xorm:"pk autoincr not null"`
IpAddr string `json:"ip_addr" xorm:"varchar(32) not null unique(inx_ip_addr)"` IpAddr string `json:"ip_addr" xorm:"varchar(32) not null unique"`
MacAddr string `json:"mac_addr" xorm:"varchar(32) not null unique(inx_mac_addr)"` MacAddr string `json:"mac_addr" xorm:"varchar(32) not null unique"`
Username string `json:"username" xorm:"varchar(60)"` Username string `json:"username" xorm:"varchar(60)"`
Keep bool `json:"keep" xorm:"Bool"` // 保留 ip-mac 绑定 Keep bool `json:"keep" xorm:"Bool"` // 保留 ip-mac 绑定
KeepTime time.Time `json:"keep_time" xorm:"DateTime"` KeepTime time.Time `json:"keep_time" xorm:"DateTime"`
@ -48,8 +49,8 @@ type IpMap struct {
} }
type Setting struct { type Setting struct {
Id int `json:"id" xorm:"pk autoincr not null"` Id int `json:"id" xorm:"pk autoincr not null"`
Name string `json:"name" xorm:"varchar(60) not null unique(inx_name)"` Name string `json:"name" xorm:"varchar(60) not null unique"`
Data string `json:"data" xorm:"Text"` Data json.RawMessage `json:"data" xorm:"Text"`
UpdatedAt time.Time `json:"updated_at" xorm:"DateTime updated"` UpdatedAt time.Time `json:"updated_at" xorm:"DateTime updated"`
} }