Add id column to User table
We used rowid before, but an explicit ID column is cleaner.
This commit is contained in:
parent
28cf1147e8
commit
b3e136e3b7
20
db.go
20
db.go
@ -61,8 +61,9 @@ type Channel struct {
|
|||||||
|
|
||||||
const schema = `
|
const schema = `
|
||||||
CREATE TABLE User (
|
CREATE TABLE User (
|
||||||
username VARCHAR(255) PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
password VARCHAR(255) NOT NULL,
|
username VARCHAR(255) NOT NULL UNIQUE,
|
||||||
|
password VARCHAR(255),
|
||||||
admin INTEGER NOT NULL DEFAULT 0
|
admin INTEGER NOT NULL DEFAULT 0
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -103,6 +104,17 @@ var migrations = []string{
|
|||||||
"ALTER TABLE Network ADD COLUMN sasl_external_cert BLOB DEFAULT NULL",
|
"ALTER TABLE Network ADD COLUMN sasl_external_cert BLOB DEFAULT NULL",
|
||||||
"ALTER TABLE Network ADD COLUMN sasl_external_key BLOB DEFAULT NULL",
|
"ALTER TABLE Network ADD COLUMN sasl_external_key BLOB DEFAULT NULL",
|
||||||
"ALTER TABLE User ADD COLUMN admin INTEGER NOT NULL DEFAULT 0",
|
"ALTER TABLE User ADD COLUMN admin INTEGER NOT NULL DEFAULT 0",
|
||||||
|
`
|
||||||
|
CREATE TABLE UserNew (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
username VARCHAR(255) NOT NULL UNIQUE,
|
||||||
|
password VARCHAR(255),
|
||||||
|
admin INTEGER NOT NULL DEFAULT 0
|
||||||
|
);
|
||||||
|
INSERT INTO UserNew SELECT rowid, username, password, admin FROM User;
|
||||||
|
DROP TABLE User;
|
||||||
|
ALTER TABLE UserNew RENAME TO User;
|
||||||
|
`,
|
||||||
}
|
}
|
||||||
|
|
||||||
type DB struct {
|
type DB struct {
|
||||||
@ -190,7 +202,7 @@ func (db *DB) ListUsers() ([]User, error) {
|
|||||||
db.lock.RLock()
|
db.lock.RLock()
|
||||||
defer db.lock.RUnlock()
|
defer db.lock.RUnlock()
|
||||||
|
|
||||||
rows, err := db.db.Query("SELECT rowid, username, password, admin FROM User")
|
rows, err := db.db.Query("SELECT id, username, password, admin FROM User")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -220,7 +232,7 @@ func (db *DB) GetUser(username string) (*User, error) {
|
|||||||
user := &User{Username: username}
|
user := &User{Username: username}
|
||||||
|
|
||||||
var password *string
|
var password *string
|
||||||
row := db.db.QueryRow("SELECT rowid, password, admin FROM User WHERE username = ?", username)
|
row := db.db.QueryRow("SELECT id, password, admin FROM User WHERE username = ?", username)
|
||||||
if err := row.Scan(&user.ID, &password, &user.Admin); err != nil {
|
if err := row.Scan(&user.ID, &password, &user.Admin); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user