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
 | |
| }
 | 
