diff options
| author | bt <bt@rctt.net> | 2026-05-24 21:24:06 +0200 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-05-24 21:49:48 +0200 |
| commit | 60c6f3dd306c50bb2330eb09372bd032eaf996eb (patch) | |
| tree | 12918ca48004b3a83dda98c89fdb898870d324c8 /storage/storage.go | |
| parent | 509bfdbcfc483240f31f9ecd0b4f97dbba96f6f7 (diff) | |
| download | solec-60c6f3dd306c50bb2330eb09372bd032eaf996eb.tar.gz solec-60c6f3dd306c50bb2330eb09372bd032eaf996eb.zip | |
[common] Handle channels using database
Diffstat (limited to 'storage/storage.go')
| -rw-r--r-- | storage/storage.go | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/storage/storage.go b/storage/storage.go index 510b587..1292945 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -17,7 +17,7 @@ const initSql = ` (id INTEGER NOT NULL PRIMARY KEY, source STRING, target STRING, timestamp INT, content STRING); CREATE TABLE IF NOT EXISTS users - (name STRING NOT NULL PRIMARY KEY, pass STRING); + (addr STRING NOT NULL PRIMARY KEY, pass STRING); CREATE TABLE IF NOT EXISTS permissions (user STRING, channel STRING, read INT, write INT, PRIMARY KEY (user, channel)); @@ -76,22 +76,22 @@ func (db *Database) GetHistory(channel string, since time.Time, num int, offset func (db *Database) SetUser(user core.UserData) error { _, err := db.Exec( - "INSERT OR REPLACE INTO users (name, pass) VALUES (?, ?);", + "INSERT OR REPLACE INTO users (addr, pass) VALUES (?, ?);", user.Name, user.Pass, ) return err } -func (db *Database) DelUser(name string) error { - _, err := db.Exec("DELETE FROM users WHERE name = ?", name) +func (db *Database) DelUser(addr string) error { + _, err := db.Exec("DELETE FROM users WHERE addr = ?", addr) return err } -func (db *Database) GetUserPass(name string) (string, error) { +func (db *Database) GetUserPass(addr string) (string, error) { var pass string - err := db.QueryRow("SELECT pass FROM users WHERE name = ?", name).Scan(&pass) + err := db.QueryRow("SELECT pass FROM users WHERE addr = ?", addr).Scan(&pass) if err != nil { return "", err } @@ -126,6 +126,31 @@ func (db *Database) GetPermission(user, channel string) (core.PermissionData, er }, nil } +func (db *Database) GetChannelUsers(channel string) (users []string, err error) { + rows, err := db.Query("SELECT user FROM permissions WHERE channel = ? AND write = 1;", channel) + defer func() { + if rows == nil { + return + } + if err := rows.Close(); err != nil { + log.Println("cannot close database row:", err) + } + }() + if err != nil { + return users, err + } + + for rows.Next() { + var user string + if err := rows.Scan(&user); err != nil { + return users, err + } + users = append(users, user) + } + + return users, nil +} + func itob(v int) bool { if v == 1 { return true |
