deletedbot/database.go
2024-10-28 17:57:26 +01:00

97 lines
1.6 KiB
Go

package main
import (
"database/sql"
"errors"
"fmt"
"log"
)
func (ses *session) initDatabase() {
createTableSQL := `
CREATE TABLE IF NOT EXISTS bots (
token TEXT NOT NULL CHECK(LENGTH(token) <= 64) PRIMARY KEY,
message TEXT NOT NULL CHECK(LENGTH(message) <= 1024)
);`
_, err := ses.Exec(createTableSQL)
if err != nil {
log.Fatalf("Failed to create table: %v", err)
}
}
func (ses *session) getMessage(token string) (string, error) {
query := "SELECT message FROM bots WHERE token = ?"
// Execute the query
var message string
err := ses.QueryRow(query, token).Scan(&message)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
return "", fmt.Errorf("no message found for token: %s", token)
}
return "", err
}
return message, nil
}
func (ses *session) setMessage(token, message string) error {
insertOrReplaceSQL := `
INSERT OR REPLACE INTO bots (token, message) VALUES (?, ?)
`
_, err := ses.Exec(insertOrReplaceSQL, token, message)
if err != nil {
return err
}
return nil
}
func (ses *session) deleteBot(token string) error {
deleteSQL := `
DELETE FROM bots WHERE token = ?
`
_, err := ses.Exec(deleteSQL, token)
if err != nil {
return err
}
return nil
}
func (ses *session) getAllBots() ([]string, error) {
query := "SELECT token FROM bots"
rows, err := ses.Query(query)
if err != nil {
return nil, err
}
defer rows.Close()
var tokens []string
for rows.Next() {
var token string
if err = rows.Scan(&token); err != nil {
return nil, err
}
tokens = append(tokens, token)
}
if err = rows.Err(); err != nil {
return nil, err
}
return tokens, nil
}