chore(supabase): remove unused pos_modules and licenses tables
This commit is contained in:
@@ -8,3 +8,12 @@
|
|||||||
- Die ungültige RLS-Policy auf `public.partners` wurde entfernt.
|
- Die ungültige RLS-Policy auf `public.partners` wurde entfernt.
|
||||||
- `public.companies` wird stattdessen korrekt durch `Admin manage companies` geschützt.
|
- `public.companies` wird stattdessen korrekt durch `Admin manage companies` geschützt.
|
||||||
- **Consequences**: Behebt Migrations-Fehler im Staging-Server, CI/CD-Pipeline baut wieder fehlerfrei.
|
- **Consequences**: Behebt Migrations-Fehler im Staging-Server, CI/CD-Pipeline baut wieder fehlerfrei.
|
||||||
|
|
||||||
|
## ADR-002: Entfernung ungenutzter Lizenztabellen
|
||||||
|
- **Status**: Accepted
|
||||||
|
- **Date**: 2026-07-06
|
||||||
|
- **Context**: Die Tabellen `pos_modules` und `licenses` wurden von einem alten bzw. externen Service genutzt. Im aktuellen Webshop-Frontend werden sie nicht benötigt und führen zu unnötiger RLS- und Integritäts-Komplexität.
|
||||||
|
- **Decision**:
|
||||||
|
- Erstellen einer SQL-Migration zum Löschen (`DROP`) von `licenses` und `pos_modules`.
|
||||||
|
- Anpassung der Integritätsprüfungs-Funktionen `check_database_integrity` und `repair_database_schema` zur Entfernung dieser Relationen.
|
||||||
|
- **Consequences**: Schlankere Datenbankstruktur, RLS-Komplexität verringert und sauberere Codebasis.
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
-- Migration: Remove unused pos_modules and licenses tables and reference functions
|
||||||
|
-- 1. Drop the tables (cascade to clean up RLS policies automatically)
|
||||||
|
DROP TABLE IF EXISTS public.licenses CASCADE;
|
||||||
|
DROP TABLE IF EXISTS public.pos_modules CASCADE;
|
||||||
|
|
||||||
|
-- 2. Update database integrity function to remove pos_modules and licenses checks
|
||||||
|
CREATE OR REPLACE FUNCTION public.check_database_integrity()
|
||||||
|
RETURNS jsonb
|
||||||
|
SECURITY DEFINER
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
tables_to_check text[] := ARRAY[
|
||||||
|
'users',
|
||||||
|
'settings',
|
||||||
|
'companies',
|
||||||
|
'categories',
|
||||||
|
'products',
|
||||||
|
'product_modules',
|
||||||
|
'orders',
|
||||||
|
'profiles',
|
||||||
|
'end_customers'
|
||||||
|
];
|
||||||
|
t text;
|
||||||
|
t_exists boolean;
|
||||||
|
t_count bigint;
|
||||||
|
tables_result jsonb := jsonb_build_object();
|
||||||
|
result jsonb;
|
||||||
|
BEGIN
|
||||||
|
FOREACH t IN ARRAY tables_to_check LOOP
|
||||||
|
SELECT EXISTS (
|
||||||
|
SELECT 1 FROM pg_tables WHERE schemaname = 'public' AND tablename = t
|
||||||
|
) INTO t_exists;
|
||||||
|
|
||||||
|
t_count := 0;
|
||||||
|
IF t_exists THEN
|
||||||
|
EXECUTE format('SELECT count(*) FROM public.%I', t) INTO t_count;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
tables_result := tables_result || jsonb_build_object(t, jsonb_build_object('exists', t_exists, 'count', t_count));
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
result := jsonb_build_object(
|
||||||
|
'tables', tables_result,
|
||||||
|
'errors', jsonb_build_object(
|
||||||
|
'foreign_keys', 0
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
RETURN result;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- 3. Update database repair schema function to remove creation of pos_modules and licenses
|
||||||
|
CREATE OR REPLACE FUNCTION public.repair_database_schema()
|
||||||
|
RETURNS jsonb
|
||||||
|
SECURITY DEFINER
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
repaired_tables text[] := '{}';
|
||||||
|
result jsonb;
|
||||||
|
BEGIN
|
||||||
|
-- 1. profiles table
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname = 'public' AND tablename = 'profiles') THEN
|
||||||
|
CREATE TABLE public.profiles (
|
||||||
|
id UUID PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,
|
||||||
|
first_name TEXT,
|
||||||
|
last_name TEXT,
|
||||||
|
company_name TEXT,
|
||||||
|
vat_id TEXT,
|
||||||
|
address TEXT,
|
||||||
|
city TEXT,
|
||||||
|
zip_code TEXT,
|
||||||
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||||
|
);
|
||||||
|
repaired_tables := array_append(repaired_tables, 'profiles');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- 2. end_customers table
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname = 'public' AND tablename = 'end_customers') THEN
|
||||||
|
CREATE TABLE public.end_customers (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
partner_id UUID NOT NULL REFERENCES public.companies(id) ON DELETE CASCADE,
|
||||||
|
company_name TEXT NOT NULL,
|
||||||
|
vat_id TEXT,
|
||||||
|
first_name TEXT,
|
||||||
|
last_name TEXT,
|
||||||
|
street TEXT,
|
||||||
|
zip TEXT,
|
||||||
|
city TEXT,
|
||||||
|
is_anonymized BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||||
|
);
|
||||||
|
repaired_tables := array_append(repaired_tables, 'end_customers');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- Enable RLS
|
||||||
|
ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE public.end_customers ENABLE ROW LEVEL SECURITY;
|
||||||
|
|
||||||
|
-- Recreate RLS Policies
|
||||||
|
DROP POLICY IF EXISTS "Users can view their own profile" ON public.profiles;
|
||||||
|
CREATE POLICY "Users can view their own profile" ON public.profiles FOR SELECT USING (auth.uid() = id);
|
||||||
|
DROP POLICY IF EXISTS "Users can update their own profile" ON public.profiles;
|
||||||
|
CREATE POLICY "Users can update their own profile" ON public.profiles FOR UPDATE USING (auth.uid() = id);
|
||||||
|
DROP POLICY IF EXISTS "Users can insert their own profile" ON public.profiles;
|
||||||
|
CREATE POLICY "Users can insert their own profile" ON public.profiles FOR INSERT WITH CHECK (auth.uid() = id);
|
||||||
|
|
||||||
|
result := jsonb_build_object(
|
||||||
|
'repaired_tables', repaired_tables
|
||||||
|
);
|
||||||
|
|
||||||
|
RETURN result;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- Reload Schema Cache
|
||||||
|
NOTIFY pgrst, 'reload schema';
|
||||||
Reference in New Issue
Block a user