Implement getCake endpoint and update memdb
This commit is contained in:
parent
d5c6cd4dc0
commit
262b586d0a
2 changed files with 26 additions and 26 deletions
37
store.go
37
store.go
|
|
@ -4,7 +4,6 @@ package main
|
|||
import (
|
||||
"database/sql"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
|
@ -21,7 +20,7 @@ type store struct {
|
|||
func NewStore(filename string) (*store, error) {
|
||||
var out store
|
||||
var err error
|
||||
if filename != ":memory:" {
|
||||
if filename != ":memory:" && filename != "file:memdb1?mode=memory&cache=shared" {
|
||||
os.Remove(filename)
|
||||
}
|
||||
// #todo: handle the error
|
||||
|
|
@ -42,6 +41,17 @@ func (s *store) close() {
|
|||
s.db.Close()
|
||||
}
|
||||
|
||||
func (s *store) getCake(id int) (cake, error) {
|
||||
out := cake{ID: id}
|
||||
row, err := s.db.Query("select name, price from cake where id = ?;", id)
|
||||
if err != nil {
|
||||
return out, err
|
||||
}
|
||||
row.Next()
|
||||
err = row.Scan(&out.Name, &out.Price)
|
||||
return out, err
|
||||
}
|
||||
|
||||
func (s *store) getCakes() ([]cake, error) {
|
||||
rows, err := s.db.Query("select id, name, price from cake")
|
||||
if err != nil {
|
||||
|
|
@ -222,26 +232,3 @@ func (s *store) saveOrder(newOrder order) (int, error) {
|
|||
return newOrder.ID, err
|
||||
|
||||
}
|
||||
|
||||
func listTables(db *sql.DB) error {
|
||||
rows, err := db.Query("SELECT name FROM sqlite_master WHERE type='table';")
|
||||
if err != nil {
|
||||
return fmt.Errorf("error querying sqlite_master: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
fmt.Println("Tables in the database:")
|
||||
for rows.Next() {
|
||||
var tableName string
|
||||
if err := rows.Scan(&tableName); err != nil {
|
||||
return fmt.Errorf("error scanning table name: %w", err)
|
||||
}
|
||||
fmt.Println("-", tableName)
|
||||
}
|
||||
|
||||
if err := rows.Err(); err != nil {
|
||||
return fmt.Errorf("error iterating through rows: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
)
|
||||
|
||||
func TestStore(t *testing.T) {
|
||||
s, err := NewStore(":memory:")
|
||||
s, err := NewStore("file:memdb1?mode=memory&cache=shared")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create store: %v", err)
|
||||
}
|
||||
|
|
@ -96,6 +96,19 @@ func TestStore(t *testing.T) {
|
|||
t.Errorf("Want %v\nGot %v", anotherCake, cakes)
|
||||
}
|
||||
|
||||
selectedCake, err := s.getCake(newCake.ID)
|
||||
if err != nil {
|
||||
t.Error("error getting a cake", err)
|
||||
}
|
||||
if selectedCake.ID != newCake.ID || selectedCake.Name != newCake.Name || selectedCake.Price != newCake.Price {
|
||||
t.Errorf("Want %v\nGot %v", newCake, selectedCake)
|
||||
}
|
||||
|
||||
selectedCake, err = s.getCake(-1)
|
||||
if err == nil {
|
||||
t.Error("no error getting a non-existant cake")
|
||||
}
|
||||
|
||||
// create new order
|
||||
now := time.Now()
|
||||
newOrder := order{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue