🚀 Auto-deploy: Schema Migrado para TS_ERP e Código Atualizado
This commit is contained in:
103
supabase/migrations/20260331000000_migrate_to_ts_erp.sql
Normal file
103
supabase/migrations/20260331000000_migrate_to_ts_erp.sql
Normal file
@@ -0,0 +1,103 @@
|
||||
|
||||
-- Migração: Mover de public para TS_ERP
|
||||
-- Data: 2026-03-31
|
||||
|
||||
-- 1. Criar o schema TS_ERP
|
||||
CREATE SCHEMA IF NOT EXISTS "TS_ERP";
|
||||
|
||||
-- 2. Garantir permissões básicas no novo schema para as roles do Supabase
|
||||
GRANT USAGE ON SCHEMA "TS_ERP" TO anon, authenticated, service_role;
|
||||
GRANT ALL ON SCHEMA "TS_ERP" TO postgres, service_role;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA "TS_ERP" GRANT ALL ON TABLES TO postgres, service_role;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA "TS_ERP" GRANT ALL ON FUNCTIONS TO postgres, service_role;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA "TS_ERP" GRANT ALL ON SEQUENCES TO postgres, service_role;
|
||||
|
||||
-- 3. Mover Tipos Customizados (Enums) primeiro (pois tabelas podem depender deles)
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
FOR r IN (
|
||||
SELECT t.typname
|
||||
FROM pg_type t
|
||||
JOIN pg_namespace n ON n.oid = t.typnamespace
|
||||
WHERE n.nspname = 'public'
|
||||
AND t.typtype = 'e' -- 'e' for enum
|
||||
)
|
||||
LOOP
|
||||
BEGIN
|
||||
EXECUTE 'ALTER TYPE public."' || r.typname || '" SET SCHEMA "TS_ERP"';
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Não foi possível mover o tipo %: %', r.typname, SQLERRM;
|
||||
END;
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
-- 4. Mover Tabelas
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public')
|
||||
LOOP
|
||||
BEGIN
|
||||
EXECUTE 'ALTER TABLE public."' || r.tablename || '" SET SCHEMA "TS_ERP"';
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Não foi possível mover a tabela %: %', r.tablename, SQLERRM;
|
||||
END;
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
-- 5. Mover Views
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
FOR r IN (SELECT viewname FROM pg_views WHERE schemaname = 'public')
|
||||
LOOP
|
||||
BEGIN
|
||||
EXECUTE 'ALTER VIEW public."' || r.viewname || '" SET SCHEMA "TS_ERP"';
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Não foi possível mover a view %: %', r.viewname, SQLERRM;
|
||||
END;
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
-- 6. Mover Sequências (que não foram movidas com as tabelas)
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
FOR r IN (SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = 'public')
|
||||
LOOP
|
||||
BEGIN
|
||||
EXECUTE 'ALTER SEQUENCE public."' || r.sequence_name || '" SET SCHEMA "TS_ERP"';
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Não foi possível mover a sequência %: %', r.sequence_name, SQLERRM;
|
||||
END;
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
-- 7. Mover Funções
|
||||
-- Nota: Mover funções é complexo via SQL dinâmico devido aos argumentos.
|
||||
-- Aqui listamos as funções conhecidas e as movemos manualmente ou via script mais robusto.
|
||||
-- Por enquanto, vamos tentar mover as funções identificadas no information_schema.
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
v_func_signature TEXT;
|
||||
BEGIN
|
||||
FOR r IN (
|
||||
SELECT ns.nspname as schema_name, p.proname as function_name, pg_get_function_identity_arguments(p.oid) as args
|
||||
FROM pg_proc p
|
||||
JOIN pg_namespace ns ON ns.oid = p.pronamespace
|
||||
WHERE ns.nspname = 'public'
|
||||
)
|
||||
LOOP
|
||||
BEGIN
|
||||
EXECUTE 'ALTER FUNCTION public."' || r.function_name || '"(' || r.args || ') SET SCHEMA "TS_ERP"';
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Não foi possível mover a função %(%): %', r.function_name, r.args, SQLERRM;
|
||||
END;
|
||||
END LOOP;
|
||||
END $$;
|
||||
59
supabase/migrations/20260331000001_restore_logto_tables.sql
Normal file
59
supabase/migrations/20260331000001_restore_logto_tables.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
-- Migração: Restaurar tabelas do Logto para o public
|
||||
-- Data: 2026-03-31
|
||||
|
||||
-- 1. Identificar e mover tabelas do Logto de volta para o schema public
|
||||
-- Estas tabelas foram movidas inadvertidamente para o TS_ERP
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
logto_tables TEXT[] := ARRAY[
|
||||
'account_identities',
|
||||
'applications',
|
||||
'connectors',
|
||||
'hook_events',
|
||||
'logs',
|
||||
'organization_members',
|
||||
'organizations',
|
||||
'password_reset_codes',
|
||||
'rbac_permissions',
|
||||
'rbac_resource_scopes',
|
||||
'rbac_resources',
|
||||
'rbac_roles',
|
||||
'sessions',
|
||||
'sso_configs',
|
||||
'sso_connectors',
|
||||
'system_config',
|
||||
'user_identities',
|
||||
'users' -- Se o Logto estava usando public.users, esta tabela deve voltar
|
||||
];
|
||||
BEGIN
|
||||
FOR r IN (
|
||||
SELECT tablename
|
||||
FROM pg_tables
|
||||
WHERE schemaname = 'TS_ERP'
|
||||
AND tablename = ANY(logto_tables)
|
||||
)
|
||||
LOOP
|
||||
BEGIN
|
||||
EXECUTE 'ALTER TABLE "TS_ERP"."' || r.tablename || '" SET SCHEMA public';
|
||||
RAISE NOTICE 'Restaurando tabela do Logto: %', r.tablename;
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Erro ao restaurar tabela %: %', r.tablename, SQLERRM;
|
||||
END;
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
-- 2. Restaurar permissões necessárias para o Logto no schema public
|
||||
GRANT ALL ON SCHEMA public TO postgres, service_role;
|
||||
GRANT USAGE ON SCHEMA public TO anon, authenticated;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO postgres, service_role;
|
||||
|
||||
-- 3. Garantir que a tabela users (do Logto) tenha as permissões corretas no public
|
||||
-- (Muitas vezes o Logto conecta com um usuário específico ou service_role)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'users') THEN
|
||||
GRANT ALL ON TABLE public.users TO postgres, service_role;
|
||||
END IF;
|
||||
END $$;
|
||||
Reference in New Issue
Block a user