summaryrefslogtreecommitdiffstats
path: root/storage/storage.go
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-24 21:24:06 +0200
committerbt <bt@rctt.net>2026-05-24 21:49:48 +0200
commit60c6f3dd306c50bb2330eb09372bd032eaf996eb (patch)
tree12918ca48004b3a83dda98c89fdb898870d324c8 /storage/storage.go
parent509bfdbcfc483240f31f9ecd0b4f97dbba96f6f7 (diff)
downloadsolec-60c6f3dd306c50bb2330eb09372bd032eaf996eb.tar.gz
solec-60c6f3dd306c50bb2330eb09372bd032eaf996eb.zip
[common] Handle channels using database
Diffstat (limited to 'storage/storage.go')
-rw-r--r--storage/storage.go37
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