32 lines
586 B
Go
32 lines
586 B
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
const (
|
|
getAllBooks = `SELECT * from books where deleted = 0`
|
|
)
|
|
|
|
type Catalogue struct {
|
|
db *sqlx.DB
|
|
}
|
|
|
|
func OpenCatalogue(dsn string) (*Catalogue, error) {
|
|
db, err := sqlx.Open("sqlite3", dsn)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to open sqlite3 database with dsn: %s, given error: %w", dsn, err)
|
|
}
|
|
|
|
return &Catalogue{db: db}, nil
|
|
}
|
|
|
|
func (c *Catalogue) GetAllBooks(ctx context.Context) ([]Book, error) {
|
|
var books []Book
|
|
err := c.db.SelectContext(ctx, &books, getAllBooks)
|
|
return books, err
|
|
}
|