mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
Improve syncer code
This commit is contained in:
parent
d06d7c5c09
commit
0033ae1ff1
@ -16,7 +16,8 @@ package object
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
|
||||||
|
"github.com/casdoor/casdoor/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (syncer *Syncer) syncUsers() error {
|
func (syncer *Syncer) syncUsers() error {
|
||||||
@ -26,17 +27,26 @@ func (syncer *Syncer) syncUsers() error {
|
|||||||
|
|
||||||
fmt.Printf("Running syncUsers()..\n")
|
fmt.Printf("Running syncUsers()..\n")
|
||||||
|
|
||||||
users, _, _ := syncer.getUserMap()
|
users, err := GetUsers(syncer.Organization)
|
||||||
oUsers, _, err := syncer.getOriginalUserMap()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf(err.Error())
|
line := fmt.Sprintf("[%s] %s\n", util.GetCurrentTime(), err.Error())
|
||||||
|
_, err2 := updateSyncerErrorText(syncer, line)
|
||||||
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
if err2 != nil {
|
||||||
line := fmt.Sprintf("[%s] %s\n", timestamp, err.Error())
|
panic(err2)
|
||||||
_, err = updateSyncerErrorText(syncer, line)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
oUsers, err := syncer.getOriginalUsers()
|
||||||
|
if err != nil {
|
||||||
|
line := fmt.Sprintf("[%s] %s\n", util.GetCurrentTime(), err.Error())
|
||||||
|
_, err2 := updateSyncerErrorText(syncer, line)
|
||||||
|
if err2 != nil {
|
||||||
|
panic(err2)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("Users: %d, oUsers: %d\n", len(users), len(oUsers))
|
fmt.Printf("Users: %d, oUsers: %d\n", len(users), len(oUsers))
|
||||||
@ -76,7 +86,7 @@ func (syncer *Syncer) syncUsers() error {
|
|||||||
updatedUser.PreHash = oHash
|
updatedUser.PreHash = oHash
|
||||||
|
|
||||||
fmt.Printf("Update from oUser to user: %v\n", updatedUser)
|
fmt.Printf("Update from oUser to user: %v\n", updatedUser)
|
||||||
_, err = syncer.updateUserForOriginalByFields(updatedUser, key)
|
_, err = syncer.updateUserForOriginalFields(updatedUser, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -113,7 +123,7 @@ func (syncer *Syncer) syncUsers() error {
|
|||||||
updatedUser.PreHash = oHash
|
updatedUser.PreHash = oHash
|
||||||
|
|
||||||
fmt.Printf("Update from oUser to user (2nd condition): %v\n", updatedUser)
|
fmt.Printf("Update from oUser to user (2nd condition): %v\n", updatedUser)
|
||||||
_, err = syncer.updateUserForOriginalByFields(updatedUser, key)
|
_, err = syncer.updateUserForOriginalFields(updatedUser, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/casdoor/casdoor/util"
|
"github.com/casdoor/casdoor/util"
|
||||||
"github.com/xorm-io/core"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type OriginalUser = User
|
type OriginalUser = User
|
||||||
@ -50,19 +49,6 @@ func (syncer *Syncer) getOriginalUsers() ([]*OriginalUser, error) {
|
|||||||
return users, nil
|
return users, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) getOriginalUserMap() ([]*OriginalUser, map[string]*OriginalUser, error) {
|
|
||||||
users, err := syncer.getOriginalUsers()
|
|
||||||
if err != nil {
|
|
||||||
return users, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
m := map[string]*OriginalUser{}
|
|
||||||
for _, user := range users {
|
|
||||||
m[user.Id] = user
|
|
||||||
}
|
|
||||||
return users, m, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (syncer *Syncer) addUser(user *OriginalUser) (bool, error) {
|
func (syncer *Syncer) addUser(user *OriginalUser) (bool, error) {
|
||||||
m := syncer.getMapFromOriginalUser(user)
|
m := syncer.getMapFromOriginalUser(user)
|
||||||
affected, err := syncer.Ormer.Engine.Table(syncer.getTable()).Insert(m)
|
affected, err := syncer.Ormer.Engine.Table(syncer.getTable()).Insert(m)
|
||||||
@ -96,31 +82,7 @@ func (syncer *Syncer) updateUser(user *OriginalUser) (bool, error) {
|
|||||||
return affected != 0, nil
|
return affected != 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) updateUserForOriginalFields(user *User) (bool, error) {
|
func (syncer *Syncer) updateUserForOriginalFields(user *User, key string) (bool, error) {
|
||||||
var err error
|
|
||||||
owner, name := util.GetOwnerAndNameFromId(user.GetId())
|
|
||||||
oldUser, err := getUserById(owner, name)
|
|
||||||
if oldUser == nil || err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if user.Avatar != oldUser.Avatar && user.Avatar != "" {
|
|
||||||
user.PermanentAvatar, err = getPermanentAvatarUrl(user.Owner, user.Name, user.Avatar, true)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
columns := syncer.getCasdoorColumns()
|
|
||||||
columns = append(columns, "affiliation", "hash", "pre_hash")
|
|
||||||
affected, err := ormer.Engine.ID(core.PK{oldUser.Owner, oldUser.Name}).Cols(columns...).Update(user)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
return affected != 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (syncer *Syncer) updateUserForOriginalByFields(user *User, key string) (bool, error) {
|
|
||||||
var err error
|
var err error
|
||||||
oldUser := User{}
|
oldUser := User{}
|
||||||
|
|
||||||
|
@ -1,37 +0,0 @@
|
|||||||
// Copyright 2021 The Casdoor Authors. All Rights Reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package object
|
|
||||||
|
|
||||||
func (syncer *Syncer) getUsers() []*User {
|
|
||||||
users, err := GetUsers(syncer.Organization)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return users
|
|
||||||
}
|
|
||||||
|
|
||||||
func (syncer *Syncer) getUserMap() ([]*User, map[string]*User, map[string]*User) {
|
|
||||||
users := syncer.getUsers()
|
|
||||||
|
|
||||||
m1 := map[string]*User{}
|
|
||||||
m2 := map[string]*User{}
|
|
||||||
for _, user := range users {
|
|
||||||
m1[user.Id] = user
|
|
||||||
m2[user.Name] = user
|
|
||||||
}
|
|
||||||
|
|
||||||
return users, m1, m2
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user