Files
Filamenteka/database/schema.sql
DaX 629b9c1756
Some checks failed
Deploy / detect (push) Successful in 4s
Deploy / deploy-api (push) Failing after 22s
Deploy / deploy-frontend (push) Successful in 2m20s
Deploy / tag-deploy (push) Has been skipped
Make schema.sql idempotent for CI/CD migrations
Add IF NOT EXISTS to CREATE TABLE and CREATE INDEX statements.
Drop and recreate triggers to avoid errors on existing databases.
2026-03-05 02:09:45 +01:00

58 lines
2.0 KiB
PL/PgSQL

-- Filamenteka PostgreSQL Schema
-- Enable UUID extension
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Colors table
CREATE TABLE IF NOT EXISTS colors (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(100) NOT NULL UNIQUE,
hex VARCHAR(7) NOT NULL,
cena_refill INTEGER DEFAULT 3499,
cena_spulna INTEGER DEFAULT 3999,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Filaments table
CREATE TABLE IF NOT EXISTS filaments (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
tip VARCHAR(50) NOT NULL,
finish VARCHAR(50) NOT NULL,
boja VARCHAR(100) NOT NULL,
boja_hex VARCHAR(7),
refill INTEGER DEFAULT 0,
spulna INTEGER DEFAULT 0,
kolicina INTEGER DEFAULT 0,
cena VARCHAR(50),
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_color FOREIGN KEY (boja) REFERENCES colors(name) ON UPDATE CASCADE,
CONSTRAINT check_kolicina CHECK (kolicina = refill + spulna)
);
-- Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_filaments_tip ON filaments(tip);
CREATE INDEX IF NOT EXISTS idx_filaments_boja ON filaments(boja);
CREATE INDEX IF NOT EXISTS idx_filaments_created_at ON filaments(created_at);
-- Create updated_at trigger function
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$ language 'plpgsql';
-- Apply trigger to filaments table
DROP TRIGGER IF EXISTS update_filaments_updated_at ON filaments;
CREATE TRIGGER update_filaments_updated_at BEFORE UPDATE
ON filaments FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
-- Apply trigger to colors table
DROP TRIGGER IF EXISTS update_colors_updated_at ON colors;
CREATE TRIGGER update_colors_updated_at BEFORE UPDATE
ON colors FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
-- Default colors are now inserted by Bambu Lab colors migration