Renamed and updated roles and privileges.
This commit is contained in:
parent
cd8e1e3b3b
commit
d30ee18e77
13 changed files with 112 additions and 72 deletions
42
db.go
42
db.go
|
|
@ -44,7 +44,7 @@ func migrate(db *sql.DB) error {
|
|||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
password_hash TEXT NOT NULL,
|
||||
role TEXT NOT NULL CHECK(role IN ('admin','coordinator','gate','ticketing','volunteer_lead')),
|
||||
role TEXT NOT NULL CHECK(role IN ('admin','ticketing','staffing','colead','gatekeeper')),
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
|
|
@ -260,6 +260,46 @@ func migrateV3(db *sql.DB) error {
|
|||
AND v.deleted_at IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM tickets t WHERE t.participant_id = v.participant_id AND t.deleted_at IS NULL)`)
|
||||
|
||||
return migrateV4(db)
|
||||
}
|
||||
|
||||
// migrateV4 renames roles: volunteer_lead→colead, coordinator→staffing, gate→gatekeeper.
|
||||
func migrateV4(db *sql.DB) error {
|
||||
var count int
|
||||
if err := db.QueryRow(`SELECT COUNT(*) FROM users WHERE role IN ('volunteer_lead','coordinator','gate')`).Scan(&count); err != nil || count == 0 {
|
||||
return nil
|
||||
}
|
||||
if _, err := db.Exec(`PRAGMA foreign_keys = OFF`); err != nil {
|
||||
return err
|
||||
}
|
||||
stmts := []string{
|
||||
`CREATE TABLE users_v4 (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
password_hash TEXT NOT NULL,
|
||||
role TEXT NOT NULL CHECK(role IN ('admin','ticketing','staffing','colead','gatekeeper')),
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
)`,
|
||||
`INSERT INTO users_v4 (id, username, password_hash, role, created_at)
|
||||
SELECT id, username, password_hash,
|
||||
CASE role
|
||||
WHEN 'volunteer_lead' THEN 'colead'
|
||||
WHEN 'coordinator' THEN 'staffing'
|
||||
WHEN 'gate' THEN 'gatekeeper'
|
||||
ELSE role
|
||||
END,
|
||||
created_at
|
||||
FROM users`,
|
||||
`DROP TABLE users`,
|
||||
`ALTER TABLE users_v4 RENAME TO users`,
|
||||
`PRAGMA foreign_keys = ON`,
|
||||
}
|
||||
for _, s := range stmts {
|
||||
if _, err := db.Exec(s); err != nil {
|
||||
db.Exec(`PRAGMA foreign_keys = ON`)
|
||||
return fmt.Errorf("migrateV4: %w", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue