mirror of
https://github.com/Sosokker/chefhai.git
synced 2025-12-19 14:04:08 +01:00
api: add get endpoints
This commit is contained in:
parent
090733815b
commit
428714e978
15
services/data/cooking.ts
Normal file
15
services/data/cooking.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { supabase } from "@/services/supabase";
|
||||||
|
import { CookingStep } from "@/types";
|
||||||
|
import { PostgrestError } from "@supabase/supabase-js";
|
||||||
|
|
||||||
|
export const getCookingSteps = async (food_id: string): Promise<{ data: CookingStep[] | null; error: PostgrestError | null }> => {
|
||||||
|
const { data, error } = await supabase.from("cooking_steps").select(`
|
||||||
|
id,
|
||||||
|
created_at,
|
||||||
|
food_id,
|
||||||
|
step_order,
|
||||||
|
title,
|
||||||
|
description
|
||||||
|
`).eq("food_id", food_id).order("step_order", { ascending: true });
|
||||||
|
return { data, error };
|
||||||
|
};
|
||||||
@ -1,20 +1,7 @@
|
|||||||
import { supabase } from "@/services/supabase";
|
import { supabase } from "@/services/supabase";
|
||||||
|
import { Foods, LikedFood, SavedFood } from "@/types";
|
||||||
import { PostgrestError } from "@supabase/supabase-js";
|
import { PostgrestError } from "@supabase/supabase-js";
|
||||||
|
|
||||||
interface Foods {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
description?: string;
|
|
||||||
time_to_cook_minutes: number;
|
|
||||||
skill_level: "Easy" | "Medium" | "Hard";
|
|
||||||
ingredient_count?: number;
|
|
||||||
calories?: number;
|
|
||||||
image_url?: string;
|
|
||||||
is_shared: boolean;
|
|
||||||
created_by: string;
|
|
||||||
created_at: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a list of foods based on the provided filters.
|
* Retrieves a list of foods based on the provided filters.
|
||||||
*
|
*
|
||||||
@ -58,18 +45,6 @@ export const getFoods = async (
|
|||||||
return { data, error };
|
return { data, error };
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SavedFood {
|
|
||||||
user_id: string;
|
|
||||||
food_id: string;
|
|
||||||
created_at: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface LikedFood {
|
|
||||||
user_id: string;
|
|
||||||
food_id: string;
|
|
||||||
created_at: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a list of saved foods for a specific user.
|
* Retrieves a list of saved foods for a specific user.
|
||||||
*
|
*
|
||||||
|
|||||||
21
services/data/forum.ts
Normal file
21
services/data/forum.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { supabase } from "@/services/supabase";
|
||||||
|
|
||||||
|
export const createLike = async (food_id: string, user_id: string) => {
|
||||||
|
const { data, error } = await supabase.from("food_likes").insert({ food_id, user_id });
|
||||||
|
return { data, error };
|
||||||
|
}
|
||||||
|
|
||||||
|
export const createSave = async (food_id: string, user_id: string) => {
|
||||||
|
const { data, error } = await supabase.from("food_saves").insert({ food_id, user_id });
|
||||||
|
return { data, error };
|
||||||
|
}
|
||||||
|
|
||||||
|
export const deleteLike = async (food_id: string, user_id: string) => {
|
||||||
|
const { data, error } = await supabase.from("food_likes").delete().eq("food_id", food_id).eq("user_id", user_id);
|
||||||
|
return { data, error };
|
||||||
|
}
|
||||||
|
|
||||||
|
export const deleteSave = async (food_id: string, user_id: string) => {
|
||||||
|
const { data, error } = await supabase.from("food_saves").delete().eq("food_id", food_id).eq("user_id", user_id);
|
||||||
|
return { data, error };
|
||||||
|
}
|
||||||
36
types.ts
Normal file
36
types.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
interface SavedFood {
|
||||||
|
user_id: string;
|
||||||
|
food_id: string;
|
||||||
|
created_at: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface LikedFood {
|
||||||
|
user_id: string;
|
||||||
|
food_id: string;
|
||||||
|
created_at: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Foods {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description?: string;
|
||||||
|
time_to_cook_minutes: number;
|
||||||
|
skill_level: "Easy" | "Medium" | "Hard";
|
||||||
|
ingredient_count?: number;
|
||||||
|
calories?: number;
|
||||||
|
image_url?: string;
|
||||||
|
is_shared: boolean;
|
||||||
|
created_by: string;
|
||||||
|
created_at: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CookingStep {
|
||||||
|
id: string,
|
||||||
|
created_at: string,
|
||||||
|
food_id: string,
|
||||||
|
step_order: number,
|
||||||
|
title: string,
|
||||||
|
description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export { CookingStep, Foods, LikedFood, SavedFood };
|
||||||
Loading…
Reference in New Issue
Block a user