mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-02 11:20:18 +08:00
Improve syncer code.
This commit is contained in:
@ -16,7 +16,6 @@ package object
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -24,38 +23,31 @@ import (
|
||||
"github.com/casbin/casdoor/util"
|
||||
)
|
||||
|
||||
type DbUser struct {
|
||||
Id int `xorm:"int notnull pk autoincr" json:"id"`
|
||||
Name string `xorm:"varchar(128)" json:"name"`
|
||||
Password string `xorm:"varchar(128)" json:"password"`
|
||||
Cellphone string `xorm:"varchar(128)" json:"cellphone"`
|
||||
SchoolId int `json:"schoolId"`
|
||||
Avatar string `xorm:"varchar(128)" json:"avatar"`
|
||||
Deleted int `xorm:"tinyint(1)" json:"deleted"`
|
||||
}
|
||||
type OriginalUser = User
|
||||
|
||||
func (syncer *Syncer) getUsersOriginal() []*DbUser {
|
||||
users := []*DbUser{}
|
||||
err := syncer.Adapter.Engine.Table(syncer.Table).Asc("id").Find(&users)
|
||||
func (syncer *Syncer) getOriginalUsers() []*OriginalUser {
|
||||
sql := fmt.Sprintf("select * from %s", syncer.Table)
|
||||
results, err := syncer.Adapter.Engine.QueryString(sql)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return users
|
||||
return syncer.getOriginalUsersFromMap(results)
|
||||
}
|
||||
|
||||
func (syncer *Syncer) getUserMapOriginal() ([]*DbUser, map[string]*DbUser) {
|
||||
users := syncer.getUsersOriginal()
|
||||
func (syncer *Syncer) getOriginalUserMap() ([]*OriginalUser, map[string]*OriginalUser) {
|
||||
users := syncer.getOriginalUsers()
|
||||
|
||||
m := map[string]*DbUser{}
|
||||
m := map[string]*OriginalUser{}
|
||||
for _, user := range users {
|
||||
m[strconv.Itoa(user.Id)] = user
|
||||
m[user.Id] = user
|
||||
}
|
||||
return users, m
|
||||
}
|
||||
|
||||
func (syncer *Syncer) addUser(user *DbUser) bool {
|
||||
affected, err := syncer.Adapter.Engine.Table(syncer.Table).Insert(user)
|
||||
func (syncer *Syncer) addUser(user *OriginalUser) bool {
|
||||
m := syncer.getMapFromOriginalUser(user)
|
||||
affected, err := syncer.Adapter.Engine.Table(syncer.Table).Insert(m)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@ -63,8 +55,20 @@ func (syncer *Syncer) addUser(user *DbUser) bool {
|
||||
return affected != 0
|
||||
}
|
||||
|
||||
func (syncer *Syncer) updateUser(user *DbUser) bool {
|
||||
affected, err := syncer.Adapter.Engine.Table(syncer.Table).ID(user.Id).Cols("name", "password", "cellphone", "school_id", "avatar", "deleted").Update(user)
|
||||
func (syncer *Syncer) getActiveColumns() []string {
|
||||
res := []string{}
|
||||
for _, tableColumn := range syncer.TableColumns {
|
||||
if tableColumn.CasdoorName != "Id" {
|
||||
res = append(res, tableColumn.Name)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func (syncer *Syncer) updateUser(user *OriginalUser) bool {
|
||||
m := syncer.getMapFromOriginalUser(user)
|
||||
columns := syncer.getActiveColumns()
|
||||
affected, err := syncer.Adapter.Engine.Table(syncer.Table).ID(user.Id).Cols(columns...).Update(m)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@ -72,8 +76,14 @@ func (syncer *Syncer) updateUser(user *DbUser) bool {
|
||||
return affected != 0
|
||||
}
|
||||
|
||||
func (syncer *Syncer) calculateHash(user *DbUser) string {
|
||||
s := strings.Join([]string{strconv.Itoa(user.Id), user.Password, user.Name, syncer.getFullAvatarUrl(user.Avatar), user.Cellphone, strconv.Itoa(user.SchoolId)}, "|")
|
||||
func (syncer *Syncer) calculateHash(user *OriginalUser) string {
|
||||
values := []string{}
|
||||
m := syncer.getMapFromOriginalUser(user)
|
||||
for _, tableColumn := range syncer.TableColumns {
|
||||
values = append(values, m[tableColumn.Name])
|
||||
}
|
||||
|
||||
s := strings.Join(values, "|")
|
||||
return util.GetMd5Hash(s)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user