🚀 Auto-deploy: GPI atualizado em 03/04/2026 19:58:11

This commit is contained in:
2026-04-03 19:58:11 +00:00
parent 9a3874bd61
commit 242d67c509
2 changed files with 39 additions and 5 deletions

31
create_public_views.sql Normal file
View File

@@ -0,0 +1,31 @@
-- Script para expor as tabelas do schema 'gpi' no schema 'public' via views
-- Isso facilita o acesso pela API padrão do Supabase/PostgREST
-- 1. Garantir que o schema public existe
CREATE SCHEMA IF NOT EXISTS public;
-- 2. Criar views no schema public para cada tabela do gpi
CREATE OR REPLACE VIEW public.organizations AS SELECT * FROM gpi.organizations;
CREATE OR REPLACE VIEW public.users AS SELECT * FROM gpi.users;
CREATE OR REPLACE VIEW public.projects AS SELECT * FROM gpi.projects;
CREATE OR REPLACE VIEW public.parts AS SELECT * FROM gpi.parts;
CREATE OR REPLACE VIEW public.painting_schemes AS SELECT * FROM gpi.painting_schemes;
CREATE OR REPLACE VIEW public.application_records AS SELECT * FROM gpi.application_records;
CREATE OR REPLACE VIEW public.inspections AS SELECT * FROM gpi.inspections;
CREATE OR REPLACE VIEW public.technical_data_sheets AS SELECT * FROM gpi.technical_data_sheets;
CREATE OR REPLACE VIEW public.yield_studies AS SELECT * FROM gpi.yield_studies;
CREATE OR REPLACE VIEW public.instruments AS SELECT * FROM gpi.instruments;
CREATE OR REPLACE VIEW public.stock_items AS SELECT * FROM gpi.stock_items;
CREATE OR REPLACE VIEW public.stock_movements AS SELECT * FROM gpi.stock_movements;
CREATE OR REPLACE VIEW public.notifications AS SELECT * FROM gpi.notifications;
CREATE OR REPLACE VIEW public.geometry_types AS SELECT * FROM gpi.geometry_types;
CREATE OR REPLACE VIEW public.messages AS SELECT * FROM gpi.messages;
CREATE OR REPLACE VIEW public.stock_audit_logs AS SELECT * FROM gpi.stock_audit_logs;
CREATE OR REPLACE VIEW public.system_settings AS SELECT * FROM gpi.system_settings;
CREATE OR REPLACE VIEW public.stored_files AS SELECT * FROM gpi.stored_files;
-- 3. Dar permissões de acesso às views
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO postgres, anon, authenticated, service_role;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO postgres, anon, authenticated, service_role;
SELECT '18 views criadas no schema public com sucesso!' AS resultado;

View File

@@ -1,6 +1,6 @@
import { Request, Response } from 'express';
import { supabase } from '../config/supabase.js';
import { toCamelCase } from '../utils/caseMapper.js';
import { toCamelCase, toSnakeCase } from '../utils/caseMapper.js';
import { IAppUser } from '../middleware/authMiddleware.js';
interface AuthRequest extends Request {
@@ -49,7 +49,8 @@ export const getStockAuditLogs = async (req: AuthRequest, res: Response) => {
export const createStockItem = async (req: AuthRequest, res: Response) => {
try {
const { data, error } = await supabase.from('stock_items').insert({ ...req.body, organization_id: req.appUser?.organizationId }).select().single();
const itemData = toSnakeCase({ ...req.body, organizationId: req.appUser?.organizationId });
const { data, error } = await supabase.from('stock_items').insert(itemData).select().single();
if (error) throw error;
res.status(201).json(toCamelCase(data));
} catch (error: unknown) {
@@ -59,11 +60,12 @@ export const createStockItem = async (req: AuthRequest, res: Response) => {
export const updateStockItem = async (req: AuthRequest, res: Response) => {
try {
const { data, error } = await supabase.from('stock_items').update(req.body).eq('id', req.params.id).select().single();
const updateData = toSnakeCase(req.body);
const { data, error } = await supabase.from('stock_items').update(updateData).eq('id', req.params.id).select().single();
if (error) throw error;
res.json(toCamelCase(data));
} catch (error: unknown) {
res.json(req.body);
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
}
};
@@ -78,7 +80,8 @@ export const deleteStockItem = async (req: AuthRequest, res: Response) => {
export const adjustStock = async (req: AuthRequest, res: Response) => {
try {
const { id } = req.params;
const { data, error } = await supabase.from('stock_items').update(req.body).eq('id', id).select().single();
const updateData = toSnakeCase(req.body);
const { data, error } = await supabase.from('stock_items').update(updateData).eq('id', id).select().single();
if (error) throw error;
res.json(toCamelCase(data));
} catch (error: unknown) {