New Base func
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
-- Migration 15: Dimensions
|
||||
-- Cost centers (kostnadsställen) and projects for journal entry lines
|
||||
|
||||
-- =============================================================================
|
||||
-- 1. cost_centers table
|
||||
-- =============================================================================
|
||||
CREATE TABLE public.cost_centers (
|
||||
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
user_id uuid REFERENCES auth.users ON DELETE CASCADE NOT NULL,
|
||||
code text NOT NULL,
|
||||
name text NOT NULL,
|
||||
is_active boolean NOT NULL DEFAULT true,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now(),
|
||||
|
||||
UNIQUE (user_id, code)
|
||||
);
|
||||
|
||||
ALTER TABLE public.cost_centers ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
CREATE POLICY "cost_centers_select" ON public.cost_centers
|
||||
FOR SELECT USING (auth.uid() = user_id);
|
||||
CREATE POLICY "cost_centers_insert" ON public.cost_centers
|
||||
FOR INSERT WITH CHECK (auth.uid() = user_id);
|
||||
CREATE POLICY "cost_centers_update" ON public.cost_centers
|
||||
FOR UPDATE USING (auth.uid() = user_id);
|
||||
CREATE POLICY "cost_centers_delete" ON public.cost_centers
|
||||
FOR DELETE USING (auth.uid() = user_id);
|
||||
|
||||
CREATE INDEX idx_cost_centers_user_id ON public.cost_centers (user_id);
|
||||
|
||||
CREATE TRIGGER cost_centers_updated_at
|
||||
BEFORE UPDATE ON public.cost_centers
|
||||
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
|
||||
|
||||
-- =============================================================================
|
||||
-- 2. projects table
|
||||
-- =============================================================================
|
||||
CREATE TABLE public.projects (
|
||||
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
user_id uuid REFERENCES auth.users ON DELETE CASCADE NOT NULL,
|
||||
code text NOT NULL,
|
||||
name text NOT NULL,
|
||||
is_active boolean NOT NULL DEFAULT true,
|
||||
start_date date,
|
||||
end_date date,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now(),
|
||||
|
||||
UNIQUE (user_id, code)
|
||||
);
|
||||
|
||||
ALTER TABLE public.projects ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
CREATE POLICY "projects_select" ON public.projects
|
||||
FOR SELECT USING (auth.uid() = user_id);
|
||||
CREATE POLICY "projects_insert" ON public.projects
|
||||
FOR INSERT WITH CHECK (auth.uid() = user_id);
|
||||
CREATE POLICY "projects_update" ON public.projects
|
||||
FOR UPDATE USING (auth.uid() = user_id);
|
||||
CREATE POLICY "projects_delete" ON public.projects
|
||||
FOR DELETE USING (auth.uid() = user_id);
|
||||
|
||||
CREATE INDEX idx_projects_user_id ON public.projects (user_id);
|
||||
|
||||
CREATE TRIGGER projects_updated_at
|
||||
BEFORE UPDATE ON public.projects
|
||||
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
|
||||
Reference in New Issue
Block a user