Files
GPI/src/server/services/paintingSchemeService.ts
T

64 lines
2.1 KiB
TypeScript

import { supabase } from '../config/supabase.js';
export const createPaintingScheme = async (data: any & { organizationId?: string }) => {
const { data: scheme, error } = await supabase
.from('painting_schemes')
.insert({ ...data, organization_id: data.organizationId })
.select()
.single();
if (error) throw error;
return scheme;
};
export const getPaintingSchemesByProject = async (projectId: string, organizationId?: string) => {
let query = supabase.from('painting_schemes').select('*').eq('project_id', projectId);
const { data, error } = await query;
if (error && error.code !== '42P01') throw error;
return data || [];
};
export const getPaintingSchemeById = async (id: string) => {
const { data, error } = await supabase.from('painting_schemes').select('*').eq('id', id).single();
if (error && error.code !== '42P01') throw error;
return data;
};
export const updatePaintingScheme = async (id: string, data: any, organizationId?: string) => {
const { data: scheme, error } = await supabase
.from('painting_schemes')
.update(data)
.eq('id', id)
.select()
.single();
if (error) throw error;
return scheme;
};
export const deletePaintingScheme = async (id: string) => {
const { error } = await supabase.from('painting_schemes').delete().eq('id', id);
if (error) throw error;
};
export const clonePaintingScheme = async (id: string, newData: any) => {
const original = await getPaintingSchemeById(id);
if (!original) return null;
const { data: scheme, error } = await supabase
.from('painting_schemes')
.insert({ ...original, ...newData, id: undefined })
.select()
.single();
if (error) throw error;
return scheme;
};
export const getAllSchemes = async (organizationId?: string) => {
let query = supabase.from('painting_schemes').select('*');
if (organizationId) {
query = query.eq('organization_id', organizationId);
}
const { data, error } = await query;
if (error && error.code !== '42P01') throw error;
return data || [];
};