fix: ensure attendance schema for tenant routing
This commit is contained in:
@@ -278,6 +278,9 @@ func (a *adapter) Open(jsonconfig json.RawMessage) error {
|
||||
if err = ensureIMOrganizationVisibilityTables(a.db); err != nil {
|
||||
return errors.New("mysql adapter failed to ensure organization visibility schema: " + err.Error())
|
||||
}
|
||||
if err = ensureIMAttendanceTables(a.db); err != nil {
|
||||
return errors.New("mysql adapter failed to ensure attendance schema: " + err.Error())
|
||||
}
|
||||
if err = ensureSnowflakePrimaryKeys(a.db); err != nil {
|
||||
return errors.New("mysql adapter failed to ensure snowflake primary keys: " + err.Error())
|
||||
}
|
||||
@@ -514,6 +517,10 @@ func (a *adapter) TenantAdapterFor(tenantID t.TenantID) (dbadapter.TenantBusines
|
||||
db.Close()
|
||||
return nil, nil, err
|
||||
}
|
||||
if err = ensureIMAttendanceTables(db); err != nil {
|
||||
db.Close()
|
||||
return nil, nil, err
|
||||
}
|
||||
if err = ensureSnowflakePrimaryKeys(db); err != nil {
|
||||
db.Close()
|
||||
return nil, nil, err
|
||||
@@ -1236,6 +1243,32 @@ func ensureIMOrganizationVisibilityTables(exec sqlExecutor) error {
|
||||
}
|
||||
|
||||
func createIMAttendanceTables(tx *sql.Tx) error {
|
||||
for _, stmt := range imAttendanceTableStatements(false) {
|
||||
if _, err := tx.Exec(stmt); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return seedIMAttendanceDefaults(tx)
|
||||
}
|
||||
|
||||
func ensureIMAttendanceTables(db *sqlx.DB) error {
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer tx.Rollback()
|
||||
for _, stmt := range imAttendanceTableStatements(true) {
|
||||
if _, err = tx.Exec(stmt); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err = seedIMAttendanceDefaults(tx); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func imAttendanceTableStatements(ifNotExists bool) []string {
|
||||
statements := []string{
|
||||
`CREATE TABLE im_attendance_rules(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
@@ -1336,11 +1369,15 @@ func createIMAttendanceTables(tx *sql.Tx) error {
|
||||
INDEX idx_im_attendance_appeals_user_status(user_id,status,id DESC)
|
||||
)`,
|
||||
}
|
||||
for _, stmt := range statements {
|
||||
if _, err := tx.Exec(stmt); err != nil {
|
||||
return err
|
||||
if ifNotExists {
|
||||
for i, stmt := range statements {
|
||||
statements[i] = strings.Replace(stmt, "CREATE TABLE ", "CREATE TABLE IF NOT EXISTS ", 1)
|
||||
}
|
||||
}
|
||||
return statements
|
||||
}
|
||||
|
||||
func seedIMAttendanceDefaults(tx *sql.Tx) error {
|
||||
if _, err := tx.Exec(`INSERT INTO im_attendance_rules(rule_id,name,workday,location_required,wifi_required,allow_outside_checkin,appeal_allowed)
|
||||
VALUES('att_rule_default','默认考勤规则',1,0,0,1,1)
|
||||
ON DUPLICATE KEY UPDATE updated_at=updated_at`); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user