97 lines
1.6 KiB
Go
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
|
||
|
}
|