mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
Add ErrorText to syncer.
This commit is contained in:
parent
d9bcce9485
commit
9fd175eefd
@ -48,6 +48,7 @@ type Syncer struct {
|
|||||||
TableColumns []*TableColumn `xorm:"mediumtext" json:"tableColumns"`
|
TableColumns []*TableColumn `xorm:"mediumtext" json:"tableColumns"`
|
||||||
AffiliationTable string `xorm:"varchar(100)" json:"affiliationTable"`
|
AffiliationTable string `xorm:"varchar(100)" json:"affiliationTable"`
|
||||||
AvatarBaseUrl string `xorm:"varchar(100)" json:"avatarBaseUrl"`
|
AvatarBaseUrl string `xorm:"varchar(100)" json:"avatarBaseUrl"`
|
||||||
|
ErrorText string `xorm:"mediumtext" json:"errorText"`
|
||||||
SyncInterval int `json:"syncInterval"`
|
SyncInterval int `json:"syncInterval"`
|
||||||
IsEnabled bool `json:"isEnabled"`
|
IsEnabled bool `json:"isEnabled"`
|
||||||
|
|
||||||
@ -147,6 +148,22 @@ func UpdateSyncer(id string, syncer *Syncer) bool {
|
|||||||
return affected != 0
|
return affected != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateSyncerErrorText(syncer *Syncer, line string) bool {
|
||||||
|
s := getSyncer(syncer.Owner, syncer.Name)
|
||||||
|
if s == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
s.ErrorText = s.ErrorText + line
|
||||||
|
|
||||||
|
affected, err := adapter.Engine.ID(core.PK{s.Owner, s.Name}).Cols("error_text").Update(s)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return affected != 0
|
||||||
|
}
|
||||||
|
|
||||||
func AddSyncer(syncer *Syncer) bool {
|
func AddSyncer(syncer *Syncer) bool {
|
||||||
affected, err := adapter.Engine.Insert(syncer)
|
affected, err := adapter.Engine.Insert(syncer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -14,13 +14,25 @@
|
|||||||
|
|
||||||
package object
|
package object
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
func (syncer *Syncer) syncUsers() {
|
func (syncer *Syncer) syncUsers() {
|
||||||
fmt.Printf("Running syncUsers()..\n")
|
fmt.Printf("Running syncUsers()..\n")
|
||||||
|
|
||||||
users, userMap := syncer.getUserMap()
|
users, userMap := syncer.getUserMap()
|
||||||
oUsers, oUserMap := syncer.getOriginalUserMap()
|
oUsers, oUserMap, err := syncer.getOriginalUserMap()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf(err.Error())
|
||||||
|
|
||||||
|
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
||||||
|
line := fmt.Sprintf("[%s] %s\n", timestamp, err.Error())
|
||||||
|
updateSyncerErrorText(syncer, line)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Printf("Users: %d, oUsers: %d\n", len(users), len(oUsers))
|
fmt.Printf("Users: %d, oUsers: %d\n", len(users), len(oUsers))
|
||||||
|
|
||||||
var affiliationMap map[int]string
|
var affiliationMap map[int]string
|
||||||
|
@ -25,42 +25,45 @@ import (
|
|||||||
|
|
||||||
type OriginalUser = User
|
type OriginalUser = User
|
||||||
|
|
||||||
func (syncer *Syncer) getOriginalUsers() []*OriginalUser {
|
func (syncer *Syncer) getOriginalUsers() ([]*OriginalUser, error) {
|
||||||
sql := fmt.Sprintf("select * from %s", syncer.getTable())
|
sql := fmt.Sprintf("select * from %s", syncer.getTable())
|
||||||
results, err := syncer.Adapter.Engine.QueryString(sql)
|
results, err := syncer.Adapter.Engine.QueryString(sql)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return syncer.getOriginalUsersFromMap(results)
|
return syncer.getOriginalUsersFromMap(results), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) getOriginalUserMap() ([]*OriginalUser, map[string]*OriginalUser) {
|
func (syncer *Syncer) getOriginalUserMap() ([]*OriginalUser, map[string]*OriginalUser, error) {
|
||||||
users := syncer.getOriginalUsers()
|
users, err := syncer.getOriginalUsers()
|
||||||
|
if err != nil {
|
||||||
|
return users, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
m := map[string]*OriginalUser{}
|
m := map[string]*OriginalUser{}
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
m[user.Id] = user
|
m[user.Id] = user
|
||||||
}
|
}
|
||||||
return users, m
|
return users, m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) addUser(user *OriginalUser) bool {
|
func (syncer *Syncer) addUser(user *OriginalUser) (bool, error) {
|
||||||
m := syncer.getMapFromOriginalUser(user)
|
m := syncer.getMapFromOriginalUser(user)
|
||||||
keyString, valueString := syncer.getSqlKeyValueStringFromMap(m)
|
keyString, valueString := syncer.getSqlKeyValueStringFromMap(m)
|
||||||
|
|
||||||
sql := fmt.Sprintf("insert into %s (%s) values (%s)", syncer.getTable(), keyString, valueString)
|
sql := fmt.Sprintf("insert into %s (%s) values (%s)", syncer.getTable(), keyString, valueString)
|
||||||
res, err := syncer.Adapter.Engine.Exec(sql)
|
res, err := syncer.Adapter.Engine.Exec(sql)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
affected, err := res.RowsAffected()
|
affected, err := res.RowsAffected()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return affected != 0
|
return affected != 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
/*func (syncer *Syncer) getOriginalColumns() []string {
|
/*func (syncer *Syncer) getOriginalColumns() []string {
|
||||||
@ -84,7 +87,7 @@ func (syncer *Syncer) getCasdoorColumns() []string {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) updateUser(user *OriginalUser) bool {
|
func (syncer *Syncer) updateUser(user *OriginalUser) (bool, error) {
|
||||||
m := syncer.getMapFromOriginalUser(user)
|
m := syncer.getMapFromOriginalUser(user)
|
||||||
pkValue := m[syncer.TablePrimaryKey]
|
pkValue := m[syncer.TablePrimaryKey]
|
||||||
delete(m, syncer.TablePrimaryKey)
|
delete(m, syncer.TablePrimaryKey)
|
||||||
@ -93,22 +96,22 @@ func (syncer *Syncer) updateUser(user *OriginalUser) bool {
|
|||||||
sql := fmt.Sprintf("update %s set %s where %s = %s", syncer.getTable(), setString, syncer.TablePrimaryKey, pkValue)
|
sql := fmt.Sprintf("update %s set %s where %s = %s", syncer.getTable(), setString, syncer.TablePrimaryKey, pkValue)
|
||||||
res, err := syncer.Adapter.Engine.Exec(sql)
|
res, err := syncer.Adapter.Engine.Exec(sql)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
affected, err := res.RowsAffected()
|
affected, err := res.RowsAffected()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return affected != 0
|
return affected != 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) updateUserForOriginalFields(user *User) bool {
|
func (syncer *Syncer) updateUserForOriginalFields(user *User) (bool, error) {
|
||||||
owner, name := util.GetOwnerAndNameFromId(user.GetId())
|
owner, name := util.GetOwnerAndNameFromId(user.GetId())
|
||||||
oldUser := getUserById(owner, name)
|
oldUser := getUserById(owner, name)
|
||||||
if oldUser == nil {
|
if oldUser == nil {
|
||||||
return false
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if user.Avatar != oldUser.Avatar && user.Avatar != "" {
|
if user.Avatar != oldUser.Avatar && user.Avatar != "" {
|
||||||
@ -119,10 +122,10 @@ func (syncer *Syncer) updateUserForOriginalFields(user *User) bool {
|
|||||||
columns = append(columns, "affiliation", "hash", "pre_hash")
|
columns = append(columns, "affiliation", "hash", "pre_hash")
|
||||||
affected, err := adapter.Engine.ID(core.PK{oldUser.Owner, oldUser.Name}).Cols(columns...).Update(user)
|
affected, err := adapter.Engine.ID(core.PK{oldUser.Owner, oldUser.Name}).Cols(columns...).Update(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return affected != 0
|
return affected != 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) calculateHash(user *OriginalUser) string {
|
func (syncer *Syncer) calculateHash(user *OriginalUser) string {
|
||||||
|
@ -21,6 +21,11 @@ import * as Setting from "./Setting";
|
|||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
import SyncerTableColumnTable from "./SyncerTableColumnTable";
|
import SyncerTableColumnTable from "./SyncerTableColumnTable";
|
||||||
|
|
||||||
|
import {Controlled as CodeMirror} from 'react-codemirror2';
|
||||||
|
import "codemirror/lib/codemirror.css";
|
||||||
|
require('codemirror/theme/material-darker.css');
|
||||||
|
require("codemirror/mode/javascript/javascript");
|
||||||
|
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
class SyncerEditPage extends React.Component {
|
class SyncerEditPage extends React.Component {
|
||||||
@ -248,6 +253,22 @@ class SyncerEditPage extends React.Component {
|
|||||||
}} />
|
}} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
<Row style={{marginTop: '20px'}} >
|
||||||
|
<Col style={{marginTop: '5px'}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||||
|
{Setting.getLabel(i18next.t("syncer:Error text"), i18next.t("syncer:Error text - Tooltip"))} :
|
||||||
|
</Col>
|
||||||
|
<Col span={22} >
|
||||||
|
<div style={{width: "100%", height: "300px"}} >
|
||||||
|
<CodeMirror
|
||||||
|
value={this.state.syncer.errorText}
|
||||||
|
options={{mode: 'javascript', theme: "material-darker"}}
|
||||||
|
onBeforeChange={(editor, data, value) => {
|
||||||
|
this.updateSyncerField("errorText", value);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
<Row style={{marginTop: '20px'}} >
|
<Row style={{marginTop: '20px'}} >
|
||||||
<Col style={{marginTop: '5px'}} span={(Setting.isMobile()) ? 19 : 2}>
|
<Col style={{marginTop: '5px'}} span={(Setting.isMobile()) ? 19 : 2}>
|
||||||
{Setting.getLabel(i18next.t("general:Is enabled"), i18next.t("general:Is enabled - Tooltip"))} :
|
{Setting.getLabel(i18next.t("general:Is enabled"), i18next.t("general:Is enabled - Tooltip"))} :
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "Datenbanktyp",
|
"Database type": "Datenbanktyp",
|
||||||
"Database type - Tooltip": "Datenbanktyp - Tooltip",
|
"Database type - Tooltip": "Datenbanktyp - Tooltip",
|
||||||
"Edit Syncer": "Syncer bearbeiten",
|
"Edit Syncer": "Syncer bearbeiten",
|
||||||
|
"Error text": "Error text",
|
||||||
|
"Error text - Tooltip": "Error text - Tooltip",
|
||||||
"Is hashed": "Ist gehasht",
|
"Is hashed": "Ist gehasht",
|
||||||
"Sync interval": "Sync-Intervall",
|
"Sync interval": "Sync-Intervall",
|
||||||
"Sync interval - Tooltip": "Sync-Intervall - Tooltip",
|
"Sync interval - Tooltip": "Sync-Intervall - Tooltip",
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "Database type",
|
"Database type": "Database type",
|
||||||
"Database type - Tooltip": "Database type - Tooltip",
|
"Database type - Tooltip": "Database type - Tooltip",
|
||||||
"Edit Syncer": "Edit Syncer",
|
"Edit Syncer": "Edit Syncer",
|
||||||
|
"Error text": "Error text",
|
||||||
|
"Error text - Tooltip": "Error text - Tooltip",
|
||||||
"Is hashed": "Is hashed",
|
"Is hashed": "Is hashed",
|
||||||
"Sync interval": "Sync interval",
|
"Sync interval": "Sync interval",
|
||||||
"Sync interval - Tooltip": "Sync interval - Tooltip",
|
"Sync interval - Tooltip": "Sync interval - Tooltip",
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "Type de base de données",
|
"Database type": "Type de base de données",
|
||||||
"Database type - Tooltip": "Type de base de données - infobulle",
|
"Database type - Tooltip": "Type de base de données - infobulle",
|
||||||
"Edit Syncer": "Editer le synchro",
|
"Edit Syncer": "Editer le synchro",
|
||||||
|
"Error text": "Error text",
|
||||||
|
"Error text - Tooltip": "Error text - Tooltip",
|
||||||
"Is hashed": "Est haché",
|
"Is hashed": "Est haché",
|
||||||
"Sync interval": "Intervalle de synchronisation",
|
"Sync interval": "Intervalle de synchronisation",
|
||||||
"Sync interval - Tooltip": "Intervalle de synchronisation - infobulle",
|
"Sync interval - Tooltip": "Intervalle de synchronisation - infobulle",
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "データベースの種類",
|
"Database type": "データベースの種類",
|
||||||
"Database type - Tooltip": "データベース タイプ - ツールチップ",
|
"Database type - Tooltip": "データベース タイプ - ツールチップ",
|
||||||
"Edit Syncer": "同期ツールを編集",
|
"Edit Syncer": "同期ツールを編集",
|
||||||
|
"Error text": "Error text",
|
||||||
|
"Error text - Tooltip": "Error text - Tooltip",
|
||||||
"Is hashed": "ハッシュされました",
|
"Is hashed": "ハッシュされました",
|
||||||
"Sync interval": "同期間隔",
|
"Sync interval": "同期間隔",
|
||||||
"Sync interval - Tooltip": "同期間隔 - ツールチップ",
|
"Sync interval - Tooltip": "同期間隔 - ツールチップ",
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "Database type",
|
"Database type": "Database type",
|
||||||
"Database type - Tooltip": "Database type - Tooltip",
|
"Database type - Tooltip": "Database type - Tooltip",
|
||||||
"Edit Syncer": "Edit Syncer",
|
"Edit Syncer": "Edit Syncer",
|
||||||
|
"Error text": "Error text",
|
||||||
|
"Error text - Tooltip": "Error text - Tooltip",
|
||||||
"Is hashed": "Is hashed",
|
"Is hashed": "Is hashed",
|
||||||
"Sync interval": "Sync interval",
|
"Sync interval": "Sync interval",
|
||||||
"Sync interval - Tooltip": "Sync interval - Tooltip",
|
"Sync interval - Tooltip": "Sync interval - Tooltip",
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "Тип базы данных",
|
"Database type": "Тип базы данных",
|
||||||
"Database type - Tooltip": "Тип базы данных - Подсказка",
|
"Database type - Tooltip": "Тип базы данных - Подсказка",
|
||||||
"Edit Syncer": "Изменить синхронизатор",
|
"Edit Syncer": "Изменить синхронизатор",
|
||||||
|
"Error text": "Error text",
|
||||||
|
"Error text - Tooltip": "Error text - Tooltip",
|
||||||
"Is hashed": "Хэшировано",
|
"Is hashed": "Хэшировано",
|
||||||
"Sync interval": "Интервал синхронизации",
|
"Sync interval": "Интервал синхронизации",
|
||||||
"Sync interval - Tooltip": "Интервал синхронизации - Tooltip",
|
"Sync interval - Tooltip": "Интервал синхронизации - Tooltip",
|
||||||
|
@ -386,6 +386,8 @@
|
|||||||
"Database type": "数据库类型",
|
"Database type": "数据库类型",
|
||||||
"Database type - Tooltip": "数据库类型",
|
"Database type - Tooltip": "数据库类型",
|
||||||
"Edit Syncer": "编辑同步器",
|
"Edit Syncer": "编辑同步器",
|
||||||
|
"Error text": "错误信息",
|
||||||
|
"Error text - Tooltip": "同步器连接数据库时发生的错误",
|
||||||
"Is hashed": "是否参与哈希计算",
|
"Is hashed": "是否参与哈希计算",
|
||||||
"Sync interval": "同步间隔",
|
"Sync interval": "同步间隔",
|
||||||
"Sync interval - Tooltip": "单位为秒",
|
"Sync interval - Tooltip": "单位为秒",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user