73 lines
2 KiB
TypeScript
73 lines
2 KiB
TypeScript
import { createClient } from "@supabase/supabase-js";
|
|
|
|
const supabase = createClient(
|
|
process.env.VITE_SUPABASE_URL || "",
|
|
process.env.SUPABASE_SERVICE_ROLE || "",
|
|
);
|
|
|
|
export default async function handler(req: any, res: any) {
|
|
const { method, query } = req;
|
|
|
|
try {
|
|
if (method === "GET") {
|
|
const artistId = query.artist_id;
|
|
|
|
if (!artistId) {
|
|
return res
|
|
.status(400)
|
|
.json({ error: "artist_id query parameter is required" });
|
|
}
|
|
|
|
const { data: artist, error: artistError } = await supabase
|
|
.from("ethos_artist_profiles")
|
|
.select(
|
|
`
|
|
user_id,
|
|
for_hire,
|
|
verified,
|
|
skills,
|
|
bio,
|
|
turnaround_days,
|
|
price_list,
|
|
sample_price_track,
|
|
sample_price_sfx,
|
|
sample_price_score,
|
|
user_profiles(id, full_name, avatar_url, email)
|
|
`,
|
|
)
|
|
.eq("user_id", artistId)
|
|
.single();
|
|
|
|
if (artistError && artistError.code !== "PGRST116") throw artistError;
|
|
|
|
if (!artist || !artist.for_hire) {
|
|
return res
|
|
.status(404)
|
|
.json({ error: "Artist not found or not available for hire" });
|
|
}
|
|
|
|
return res.json({
|
|
user_id: artist.user_id,
|
|
name: artist.user_profiles?.[0]?.full_name,
|
|
avatar_url: artist.user_profiles?.[0]?.avatar_url,
|
|
email: artist.user_profiles?.[0]?.email,
|
|
bio: artist.bio,
|
|
verified: artist.verified,
|
|
skills: artist.skills,
|
|
turnaround_days: artist.turnaround_days,
|
|
services: {
|
|
price_list: artist.price_list || {
|
|
track_custom: artist.sample_price_track,
|
|
sfx_pack: artist.sample_price_sfx,
|
|
full_score: artist.sample_price_score,
|
|
},
|
|
},
|
|
});
|
|
} else {
|
|
return res.status(405).json({ error: "Method not allowed" });
|
|
}
|
|
} catch (err: any) {
|
|
console.error("[Ethos Artist Services]", err);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
}
|