36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package repos
|
|
|
|
import (
|
|
"context"
|
|
"gralias/models"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
type JournalRepo interface {
|
|
JournalByRoomID(ctx context.Context, roomID string) ([]models.Journal, error)
|
|
JournalCreate(ctx context.Context, j *models.Journal) error
|
|
JournalDeleteByRoomID(ctx context.Context, roomID string) error
|
|
}
|
|
|
|
func (p *RepoProvider) JournalByRoomID(ctx context.Context, roomID string) ([]models.Journal, error) {
|
|
journals := []models.Journal{}
|
|
err := sqlx.SelectContext(ctx, p.DB, &journals, `SELECT id, created_at, entry, username, room_id FROM journal WHERE room_id = ? ORDER BY created_at ASC`, roomID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return journals, nil
|
|
}
|
|
|
|
func (p *RepoProvider) JournalCreate(ctx context.Context, j *models.Journal) error {
|
|
db := getDB(ctx, p.DB)
|
|
_, err := db.ExecContext(ctx, `INSERT INTO journal (entry, username, room_id) VALUES (?, ?, ?)`, j.Entry, j.Username, j.RoomID)
|
|
return err
|
|
}
|
|
|
|
func (p *RepoProvider) JournalDeleteByRoomID(ctx context.Context, roomID string) error {
|
|
db := getDB(ctx, p.DB)
|
|
_, err := db.ExecContext(ctx, `DELETE FROM journal WHERE room_id = ?`, roomID)
|
|
return err
|
|
}
|