feat: implement filament and spool preset services with CRUD operations
- Add `FilamentService` for managing filament inventory, including creation, retrieval, updating, and deletion of filaments. - Introduce `SpoolPresetService` for handling spool presets, allowing users to create, update, and delete their custom presets. - Create domain models for `Filament` and `SpoolPreset` with necessary fields and methods. - Define repository interfaces for filament and spool preset persistence. - Implement application configuration management from environment variables. - Set up error handling with a centralized `AppError` type. - Build the Axum router with public and protected routes for user authentication and resource management.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
-- Migration: 003 - Criar tabela de filamentos
|
||||
|
||||
CREATE TABLE filaments (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
user_id UUID NOT NULL REFERENCES users (id) ON DELETE CASCADE,
|
||||
material TEXT NOT NULL,
|
||||
brand TEXT NOT NULL,
|
||||
model TEXT,
|
||||
color_hex TEXT NOT NULL,
|
||||
spool_preset_id UUID NOT NULL REFERENCES spool_presets (id),
|
||||
total_weight_g INTEGER NOT NULL CHECK (total_weight_g > 0),
|
||||
net_weight_g INTEGER NOT NULL CHECK (net_weight_g >= 0),
|
||||
temp_hotend_c INTEGER CHECK (temp_hotend_c > 0),
|
||||
temp_bed_c INTEGER CHECK (temp_bed_c >= 0),
|
||||
flow_factor_pct DOUBLE PRECISION CHECK (flow_factor_pct > 0),
|
||||
notes TEXT,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_filaments_user_id ON filaments (user_id);
|
||||
CREATE INDEX idx_filaments_material ON filaments (user_id, material);
|
||||
CREATE INDEX idx_filaments_brand ON filaments (user_id, brand);
|
||||
CREATE INDEX idx_filaments_updated_at ON filaments (user_id, updated_at DESC);
|
||||
-- Índice para suporte a alertas de estoque baixo
|
||||
CREATE INDEX idx_filaments_net_weight ON filaments (user_id, net_weight_g);
|
||||
Reference in New Issue
Block a user