Complete backend verification: fix syntax errors, create __init__.py files, add setup_db.py, update docker-compose for two PostgreSQL containers
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
-- Initialize MTG data database
|
||||
-- Uses $POSTGRES_USER from environment
|
||||
|
||||
-- Create mtgdata database if it doesn't exist (owned by the POSTGRES_USER)
|
||||
SELECT 'CREATE DATABASE mtgdata OWNER ' || current_user
|
||||
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mtgdata')\gexec
|
||||
|
||||
-- Connect to mtgdata and set up schema permissions
|
||||
\c mtgdata
|
||||
|
||||
-- Grant all privileges to the app user
|
||||
GRANT ALL PRIVILEGES ON DATABASE mtgdata TO current_user;
|
||||
GRANT ALL ON SCHEMA public TO current_user;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO current_user;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO current_user;
|
||||
|
||||
-- Create extensions
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
|
||||
|
||||
-- Create mtgjson tables
|
||||
CREATE TABLE IF NOT EXISTS mtg_sets (
|
||||
id SERIAL PRIMARY KEY,
|
||||
code VARCHAR(10) UNIQUE NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(50),
|
||||
release_date DATE,
|
||||
base_set_size INTEGER,
|
||||
total_size INTEGER,
|
||||
is_foil_only BOOLEAN DEFAULT FALSE,
|
||||
is_non_foil_only BOOLEAN DEFAULT FALSE,
|
||||
digital BOOLEAN DEFAULT FALSE,
|
||||
icon_svg_url TEXT,
|
||||
parent_code VARCHAR(10),
|
||||
mtgo_code VARCHAR(10),
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS mtg_cards (
|
||||
id SERIAL PRIMARY KEY,
|
||||
set_id INTEGER REFERENCES mtg_sets(id),
|
||||
name VARCHAR(255) NOT NULL,
|
||||
mana_cost TEXT,
|
||||
type_line VARCHAR(255),
|
||||
oracle_text TEXT,
|
||||
power VARCHAR(10),
|
||||
toughness VARCHAR(10),
|
||||
rarity VARCHAR(50),
|
||||
layout VARCHAR(50),
|
||||
artist VARCHAR(255),
|
||||
flavor_text TEXT,
|
||||
numbers VARCHAR(50),
|
||||
identifiers JSONB,
|
||||
images JSONB,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_mtg_cards_set_id ON mtg_cards(set_id);
|
||||
CREATE INDEX idx_mtg_cards_name ON mtg_cards(name);
|
||||
CREATE INDEX idx_mtg_cards_type ON mtg_cards(type_line);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS mtg_refresh_log (
|
||||
id SERIAL PRIMARY KEY,
|
||||
refresh_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
status VARCHAR(50) NOT NULL,
|
||||
cards_updated INTEGER DEFAULT 0,
|
||||
sets_updated INTEGER DEFAULT 0,
|
||||
error_message TEXT,
|
||||
duration_seconds INTEGER
|
||||
);
|
||||
|
||||
CREATE INDEX idx_mtg_refresh_log_date ON mtg_refresh_log(refresh_date);
|
||||
Reference in New Issue
Block a user