Feat: db migrations [WIP]
This commit is contained in:
6
Makefile
6
Makefile
@ -33,3 +33,9 @@ stop-container:
|
|||||||
|
|
||||||
run-container: stop-container
|
run-container: stop-container
|
||||||
docker run --name=gralias -v $(CURDIR)/store.json:/root/store.json -p 0.0.0.0:3000:3000 -d gralias:master
|
docker run --name=gralias -v $(CURDIR)/store.json:/root/store.json -p 0.0.0.0:3000:3000 -d gralias:master
|
||||||
|
|
||||||
|
migrate-up:
|
||||||
|
migrate -database 'sqlite3://gralias.db' -path migrations up
|
||||||
|
|
||||||
|
migrate-down:
|
||||||
|
migrate -database 'sqlite3://gralias.db' -path migrations down
|
||||||
|
BIN
gralias.db
Normal file
BIN
gralias.db
Normal file
Binary file not shown.
7
migrations/001_initial_schema.down.sql
Normal file
7
migrations/001_initial_schema.down.sql
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
-- migrations/001_initial_schema.down.sql
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS actions;
|
||||||
|
DROP TABLE IF EXISTS card_marks;
|
||||||
|
DROP TABLE IF EXISTS word_cards;
|
||||||
|
DROP TABLE IF EXISTS players;
|
||||||
|
DROP TABLE IF EXISTS rooms;
|
62
migrations/001_initial_schema.up.sql
Normal file
62
migrations/001_initial_schema.up.sql
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
-- migrations/001_initial_schema.up.sql
|
||||||
|
|
||||||
|
CREATE TABLE rooms (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
created_at TIMESTAMP NOT NULL,
|
||||||
|
creator_name TEXT NOT NULL,
|
||||||
|
team_turn TEXT,
|
||||||
|
this_turn_limit INTEGER,
|
||||||
|
opened_this_turn INTEGER,
|
||||||
|
blue_counter INTEGER,
|
||||||
|
red_counter INTEGER,
|
||||||
|
red_turn BOOLEAN,
|
||||||
|
mime_done BOOLEAN,
|
||||||
|
is_public BOOLEAN,
|
||||||
|
is_running BOOLEAN,
|
||||||
|
language TEXT,
|
||||||
|
round_time INTEGER,
|
||||||
|
is_over BOOLEAN,
|
||||||
|
team_won TEXT,
|
||||||
|
room_pass TEXT
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE players (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
room_id TEXT NOT NULL,
|
||||||
|
username TEXT NOT NULL,
|
||||||
|
team TEXT, -- 'red' or 'blue'
|
||||||
|
role TEXT, -- 'guesser' or 'mime'
|
||||||
|
is_bot BOOLEAN DEFAULT FALSE,
|
||||||
|
FOREIGN KEY (room_id) REFERENCES rooms(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE word_cards (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
room_id TEXT NOT NULL,
|
||||||
|
word TEXT NOT NULL,
|
||||||
|
color TEXT,
|
||||||
|
revealed BOOLEAN DEFAULT FALSE,
|
||||||
|
mime_view BOOLEAN DEFAULT FALSE,
|
||||||
|
FOREIGN KEY (room_id) REFERENCES rooms(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE card_marks (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
card_id INTEGER NOT NULL,
|
||||||
|
username TEXT NOT NULL,
|
||||||
|
active BOOLEAN DEFAULT TRUE,
|
||||||
|
FOREIGN KEY (card_id) REFERENCES word_cards(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE actions (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
room_id TEXT NOT NULL,
|
||||||
|
actor TEXT NOT NULL,
|
||||||
|
actor_color TEXT,
|
||||||
|
action_type TEXT NOT NULL,
|
||||||
|
word TEXT,
|
||||||
|
word_color TEXT,
|
||||||
|
number_associated TEXT, -- for clues
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
FOREIGN KEY (room_id) REFERENCES rooms(id)
|
||||||
|
);
|
9
repos/main.go
Normal file
9
repos/main.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package repos
|
||||||
|
|
||||||
|
type AllRepos interface {
|
||||||
|
RoomsRepo
|
||||||
|
}
|
||||||
|
|
||||||
|
type RepoProvider struct {
|
||||||
|
// db connection
|
||||||
|
}
|
15
repos/rooms.go
Normal file
15
repos/rooms.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package repos
|
||||||
|
|
||||||
|
import "gralias/models"
|
||||||
|
|
||||||
|
type RoomsRepo interface {
|
||||||
|
ListRooms() ([]models.Room, error)
|
||||||
|
GetRoomByID(id string) (*models.Room, error)
|
||||||
|
CreateRoom(room *models.Room) error
|
||||||
|
DeleteRoomByID(id string) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// provider implementation
|
||||||
|
func (p RepoProvider) ListRooms() ([]models.Room, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
Reference in New Issue
Block a user