72 lines
2.7 KiB
SQL
72 lines
2.7 KiB
SQL
-- 3D Printing Module Migration
|
|
|
|
-- 1. PRINTERS Table
|
|
create table if not exists public.printers (
|
|
id uuid default uuid_generate_v4() primary key,
|
|
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
|
|
name text not null,
|
|
power_watts numeric default 0, -- Power consumption in Watts
|
|
depreciation_per_hour numeric default 0, -- Estimated depreciation cost per hour
|
|
user_id uuid references auth.users
|
|
);
|
|
|
|
-- 2. FILAMENTS Table
|
|
create table if not exists public.filaments (
|
|
id uuid default uuid_generate_v4() primary key,
|
|
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
|
|
name text not null, -- e.g. "PLA Generico"
|
|
brand text,
|
|
material text, -- PLA, PETG, ABS, etc.
|
|
color text,
|
|
density_g_cm3 numeric default 1.24, -- Optional, for volume calc
|
|
spool_weight_g numeric default 1000, -- e.g. 1000g (1kg)
|
|
price_brl numeric default 0, -- Cost of the spool
|
|
temp_nozzle integer,
|
|
temp_bed integer,
|
|
user_id uuid references auth.users
|
|
);
|
|
|
|
-- 3. PRINT JOBS / CALCULATIONS
|
|
create table if not exists public.print_jobs (
|
|
id uuid default uuid_generate_v4() primary key,
|
|
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
|
|
name text not null, -- Project/Part name
|
|
|
|
-- Inputs
|
|
printer_id uuid references public.printers,
|
|
filament_id uuid references public.filaments,
|
|
weight_g numeric default 0,
|
|
print_time_hours numeric default 0,
|
|
|
|
-- Costs Snapshot (Calculated at creation time)
|
|
energy_cost numeric default 0,
|
|
filament_cost numeric default 0,
|
|
depreciation_cost numeric default 0,
|
|
additional_cost numeric default 0,
|
|
|
|
total_cost numeric default 0,
|
|
markup_percentage numeric default 0,
|
|
final_price numeric default 0,
|
|
|
|
status text default 'Draft', -- Draft, Printing, Completed
|
|
user_id uuid references auth.users
|
|
);
|
|
|
|
-- 4. SETTINGS Update (Electricity Cost)
|
|
-- Adding a column safely
|
|
do $$
|
|
begin
|
|
if not exists (select 1 from information_schema.columns where table_name='settings' and column_name='electricity_cost_kwh') then
|
|
alter table public.settings add column electricity_cost_kwh numeric default 0.90;
|
|
end if;
|
|
end $$;
|
|
|
|
-- Enable RLS
|
|
alter table public.printers enable row level security;
|
|
alter table public.filaments enable row level security;
|
|
alter table public.print_jobs enable row level security;
|
|
|
|
-- Simple Policies (adjust as needed for authenticated users)
|
|
create policy "Enable all for users based on user_id" on public.printers for all using (auth.uid() = user_id);
|
|
create policy "Enable all for users based on user_id" on public.filaments for all using (auth.uid() = user_id);
|
|
create policy "Enable all for users based on user_id" on public.print_jobs for all using (auth.uid() = user_id);
|