curl --request GET \
--url https://api.example.com/api/admin/seed-locations{
"success": true,
"seeded": {
"brands": [
"<string>"
],
"locations": [
"<string>"
]
}
}Seed the database with predefined brands and locations
curl --request GET \
--url https://api.example.com/api/admin/seed-locations{
"success": true,
"seeded": {
"brands": [
"<string>"
],
"locations": [
"<string>"
]
}
}GET /api/admin/seed-locations
canViewSettings permission (admin or super_admin only).
await requirePermission("canViewSettings");
| Name | Slug |
|---|---|
| La Tasca | la-tasca |
| El Patio | el-patio |
| La Brisa Madrid | la-brisa |
| Name | City | Address | Brand |
|---|---|---|---|
| La Tasca Madrid · Centro | Madrid | Calle Gran Vía, 25 | La Tasca |
| La Tasca Madrid · Salamanca | Madrid | Calle Serrano, 3 | La Tasca |
| La Tasca Barcelona · Eixample | Barcelona | Carrer de Provença, 230 | La Tasca |
| El Patio Barcelona | Barcelona | Carrer del Consell de Cent, 302 | El Patio |
| La Brisa Madrid | Madrid | Paseo de la Castellana, 200 | La Brisa |
curl -X GET https://your-domain.com/api/admin/seed-locations \
-H "Cookie: your-session-cookie"
{
"success": true,
"seeded": {
"brands": ["La Tasca", "El Patio", "La Brisa Madrid"],
"locations": [
"La Tasca Madrid · Centro",
"La Tasca Madrid · Salamanca",
"La Tasca Barcelona · Eixample",
"El Patio Barcelona",
"La Brisa Madrid"
]
}
}
{
"success": false,
"error": "Error message",
"status": 500
}
slug/nameimport { createClient } from "@supabase/supabase-js";
import { requirePermission } from "@/lib/authz";
export async function GET() {
await requirePermission("canViewSettings");
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SERVICE_ROLE_KEY!
);
// Seed brands
for (const brand of BRANDS) {
const { data: existing } = await supabase
.from('brands')
.select('id')
.eq('slug', brand.slug)
.maybeSingle();
if (!existing) {
await supabase.from('brands').insert({
name: brand.name,
slug: brand.slug
});
}
}
// Seed locations linked to brands
for (const loc of LOCATIONS) {
const brandId = allBrands.find(b => b.slug === loc.brand_slug)?.id;
const { data: existingLoc } = await supabase
.from('locations')
.select('id')
.eq('name', loc.name)
.maybeSingle();
if (!existingLoc) {
await supabase.from('locations').insert({
name: loc.name,
city: loc.city,
address: loc.address,
brand_id: brandId
});
}
}
}