Edit app-9xzmfic2e4g1/src/db/api.ts via Editor

This commit is contained in:
Flatlogic Bot 2026-03-06 17:39:29 +00:00
parent 2a52cdf8a5
commit 27a33044af

View File

@ -40,7 +40,6 @@ export interface Trip {
}
const api = {
// Trips
async getTrips() {
const { data, error } = await supabase
.from('trips')
@ -89,7 +88,6 @@ const api = {
if (error) throw error;
},
// Edge Functions
async generateItinerary(params: {
startDate: string;
endDate: string;
@ -131,7 +129,6 @@ const api = {
// ── Public Guides ──────────────────────────────────────────────────────────
/** Rehber olarak yayınla / yayından kaldır */
async publishGuide(tripId: string, opts: {
guide_intro?: string;
guide_tips?: string[];
@ -159,11 +156,10 @@ const api = {
if (error) throw error;
},
/** Tüm public rehberleri getir (popülerlik sırasına göre) */
async getPublicGuides(limit = 20) {
const { data, error } = await supabase
.from('trips')
.select('id, title, destination, start_date, end_date, itinerary, guide_intro, guide_tips, views_count, likes_count, published_at, user_id, profiles(id, username)')
.select('id, title, destination, start_date, end_date, itinerary, guide_intro, guide_tips, views_count, likes_count, published_at, user_id, profiles(id, full_name)')
.eq('is_public', true)
.order('likes_count', { ascending: false })
.order('views_count', { ascending: false })
@ -172,21 +168,18 @@ const api = {
return data || [];
},
/** Tek bir public rehberi getir + view sayacını artır */
async getPublicGuide(tripId: string) {
const { data, error } = await supabase
.from('trips')
.select('*, profiles(id, username)')
.select('*, profiles(id, full_name)')
.eq('id', tripId)
.eq('is_public', true)
.single();
if (error) throw error;
// view sayacını artır (fire & forget)
supabase.rpc('increment_guide_views', { trip_id: tripId }).then(() => {});
return data;
},
/** Rehberi kopyalayarak kendi tripini oluştur */
async cloneGuide(tripId: string): Promise<Trip> {
const guide = await this.getPublicGuide(tripId);
if (!guide) throw new Error('Rehber bulunamadı');
@ -201,7 +194,6 @@ const api = {
return newTrip;
},
/** Beğen / beğeniyi geri al */
async toggleLike(tripId: string): Promise<boolean> {
const { data: { user } } = await supabase.auth.getUser();
if (!user) throw new Error('Giriş gerekli');
@ -215,14 +207,13 @@ const api = {
if (existing) {
await supabase.from('guide_likes').delete().eq('user_id', user.id).eq('trip_id', tripId);
return false; // beğeni kaldırıldı
return false;
} else {
await supabase.from('guide_likes').insert({ user_id: user.id, trip_id: tripId });
return true; // beğenildi
return true;
}
},
/** Kullanıcının beğendiği guide id'leri */
async getMyLikes(): Promise<string[]> {
const { data: { user } } = await supabase.auth.getUser();
if (!user) return [];
@ -232,4 +223,6 @@ const api = {
.eq('user_id', user.id);
return (data || []).map(r => r.trip_id);
},
};
};
export default api;