Implement dynamically getting board data

This commit is contained in:
Dominic Ferrando
2025-04-17 19:27:47 -04:00
parent 576cc763b0
commit e5b52712d1
16 changed files with 135 additions and 26 deletions
Binary file not shown.
+34
View File
@@ -0,0 +1,34 @@
package database
import (
"database/sql"
)
func GetBoards(db *sql.DB) ([]Board, error) {
rows, err := db.Query(`select id, name, slug, tag from boards order by slug`)
if err != nil {
return nil, err
}
defer rows.Close()
var result []Board
for rows.Next() {
var b Board
err := rows.Scan(&b.Id, &b.Name, &b.Slug, &b.Tag)
if err != nil {
return nil, err
}
result = append(result, b)
}
return result, rows.Err()
}
func GetBoard(db *sql.DB, slug string) (Board, error) {
row := db.QueryRow(`SELECT id, name, slug, tag FROM boards WHERE slug = ?`, slug)
var result Board
row.Scan(&result.Id, &result.Name, &result.Slug, &result.Tag)
return result, row.Err()
}
+26
View File
@@ -0,0 +1,26 @@
package database
import "time"
type Board struct {
Id int
Slug string
Name string
Tag string
}
type Thread struct {
Id int
BoardId int
Subject string
CreatedAt time.Time
BumpedAt time.Time
}
type Post struct {
Id int
ThreadId int
Author string
Body string
CreatedAt time.Time
}
@@ -8,13 +8,13 @@ CREATE TABLE IF NOT EXISTS boards (
id INTEGER PRIMARY KEY,
slug TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
tag TEXT
tag TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS threads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
board_id INTEGER NOT NULL,
subject TEXT,
subject TEXT NOT NULL DEFAULT '',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
bumped_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (board_id) REFERENCES boards(id) ON DELETE CASCADE
-1
View File
@@ -1 +0,0 @@
package db
-1
View File
@@ -1 +0,0 @@
package internal
-1
View File
@@ -1 +0,0 @@
package internal