291 lines
9.0 KiB
JavaScript
291 lines
9.0 KiB
JavaScript
const { Client, Databases, ID, Query } = require('./node_modules/node-appwrite');
|
||
|
||
const client = new Client()
|
||
.setEndpoint('https://appwrite.almeira.com.co/v1')
|
||
.setProject('69b84df5003bd8957c5c')
|
||
.setKey('standard_cce3cdb866ea6433888d40cedd24dc45987372308fdc3dd0697de08648c0e5c7e04b02c3bcee271403fd656b00a5820f04c08b51631284a6e8a3582d8aed2aa33234f3c29cc777e9b162eb54810b789251b0d006a9a3b081ebc2da53b9baa94614b124b3508ad849fd9a4187cc6094f506d4b57f409b69d9562a74df594f3ec3');
|
||
|
||
const dbs = new Databases(client);
|
||
const DB_ID = 'sneakers_multistore_db';
|
||
|
||
const INITIAL_CITIES = [
|
||
{
|
||
id: 'city-cali',
|
||
name: 'Cali',
|
||
department: 'Valle del Cauca',
|
||
shippingCost: 0,
|
||
deliveryTime: 'Entrega en 24 Horas (Domicilio Local)',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: true,
|
||
exchangePolicyNote: '1er Cambio de Talla 100% GRATIS en Cali (posteriores con flete estándar)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-jamundi',
|
||
name: 'Jamundí',
|
||
department: 'Valle del Cauca',
|
||
shippingCost: 5000,
|
||
deliveryTime: 'Entrega en 24 Horas',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: true,
|
||
exchangePolicyNote: '1er Cambio de Talla 100% GRATIS en Jamundí (posteriores con flete estándar)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-palmira',
|
||
name: 'Palmira',
|
||
department: 'Valle del Cauca',
|
||
shippingCost: 7000,
|
||
deliveryTime: 'Entrega en 24 Horas',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: true,
|
||
exchangePolicyNote: '1er Cambio de Talla 100% GRATIS en Palmira (posteriores con flete estándar)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-yumbo',
|
||
name: 'Yumbo',
|
||
department: 'Valle del Cauca',
|
||
shippingCost: 5000,
|
||
deliveryTime: 'Entrega en 24 Horas',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: true,
|
||
exchangePolicyNote: '1er Cambio de Talla 100% GRATIS en Yumbo (posteriores con flete estándar)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-bogota',
|
||
name: 'Bogotá D.C.',
|
||
department: 'Cundinamarca',
|
||
shippingCost: 12000,
|
||
deliveryTime: '2 a 3 días hábiles',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: false,
|
||
exchangePolicyNote: 'Cambio de talla garantizado (flete logístico asumido por el cliente)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-medellin',
|
||
name: 'Medellín',
|
||
department: 'Antioquia',
|
||
shippingCost: 12000,
|
||
deliveryTime: '2 a 3 días hábiles',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: false,
|
||
exchangePolicyNote: 'Cambio de talla garantizado (flete logístico asumido por el cliente)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-barranquilla',
|
||
name: 'Barranquilla',
|
||
department: 'Atlántico',
|
||
shippingCost: 14000,
|
||
deliveryTime: '3 a 4 días hábiles',
|
||
allowsContraentrega: true,
|
||
firstExchangeFree: false,
|
||
exchangePolicyNote: 'Cambio de talla garantizado (flete logístico asumido por el cliente)',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'city-nacional',
|
||
name: 'Otras Ciudades / Resto del País',
|
||
department: 'Colombia',
|
||
shippingCost: 15000,
|
||
deliveryTime: '2 a 5 días hábiles',
|
||
allowsContraentrega: false,
|
||
firstExchangeFree: false,
|
||
exchangePolicyNote: 'Cambio de talla garantizado (flete nacional asumido por el cliente)',
|
||
isActive: true
|
||
},
|
||
];
|
||
|
||
const INITIAL_PAYMENT_METHODS = [
|
||
{
|
||
id: 'pay-bold-link',
|
||
name: 'Bold.co • PSE, Tarjetas Débito/Crédito, Nequi o QR (Oficial)',
|
||
type: 'bold',
|
||
description: 'Paga de forma rápida y 100% segura con tu cuenta Bold. Acepta PSE, Tarjetas Visa/Mastercard y QR de cualquier banco.',
|
||
requiresDeposit: false,
|
||
depositAmount: 0,
|
||
boldPaymentLink: 'https://bold.co/p/carlos-lasso',
|
||
accountInfo: 'Pasarela Oficial Bold.co • PSE / Tarjetas / QR',
|
||
isActive: true,
|
||
},
|
||
{
|
||
id: 'pay-deposit-10k',
|
||
name: 'Separación con $10.000 + Saldo Contraentrega',
|
||
type: 'contraentrega',
|
||
description: 'Asegura tu talla con solo $10.000 COP vía Bold/Nequi/Daviplata y cancelas el saldo restante en efectivo o transferencia cuando el mensajero llegue a tu casa.',
|
||
requiresDeposit: true,
|
||
depositAmount: 10000,
|
||
accountInfo: 'Nequi / Daviplata Oficial: 316 745 5877 (Carlos Andrés Lasso)',
|
||
boldPaymentLink: 'https://bold.co/p/carlos-lasso',
|
||
isActive: true,
|
||
},
|
||
{
|
||
id: 'pay-cod-full',
|
||
name: 'Pago 100% Contraentrega (Cali y Alrededores)',
|
||
type: 'contraentrega',
|
||
description: 'Pagas el 100% del valor total al recibir en tu puerta (válido para entregas urbanas en 24 horas).',
|
||
requiresDeposit: false,
|
||
depositAmount: 0,
|
||
accountInfo: '',
|
||
boldPaymentLink: '',
|
||
isActive: true,
|
||
},
|
||
{
|
||
id: 'pay-nequi-full',
|
||
name: 'Transferencia Total Anticipada Nequi / Daviplata',
|
||
type: 'nequi',
|
||
description: 'Paga el 100% anticipado y recibe prioridad de despacho express en 24 horas.',
|
||
requiresDeposit: false,
|
||
depositAmount: 0,
|
||
accountInfo: 'Nequi / Daviplata: 316 745 5877 (Carlos Andrés Lasso)',
|
||
boldPaymentLink: '',
|
||
isActive: true,
|
||
},
|
||
];
|
||
|
||
const INITIAL_SUPPLIERS = [
|
||
{
|
||
id: 'sup-jovic',
|
||
name: '💎 2️⃣ DIFUSIÓN JOVIC STORE COLOMBIA🍀',
|
||
phone: '573167455877',
|
||
contactPerson: 'Asesor Jovic Store',
|
||
address: 'Centro / Bodega Cali',
|
||
notes: 'Proveedor oficial Nike, Jordan, Nocta y Vomero calidades Top.',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'sup-ccmio',
|
||
name: 'EXCLUSIVE CC MÍO 3B',
|
||
phone: '573159876543',
|
||
contactPerson: 'Despachos CC MÍO 3B',
|
||
address: 'CC MÍO Local 3B, Cali',
|
||
notes: 'Especialista en Adidas, Coach, Timberland y Skatewear.',
|
||
isActive: true
|
||
},
|
||
{
|
||
id: 'sup-central',
|
||
name: 'BODEGA CENTRAL MAYORISTA',
|
||
phone: '573101234567',
|
||
contactPerson: 'Logística Despachos',
|
||
address: 'San Andresito / Cali',
|
||
notes: 'Despacho rápido en 24 horas para separación inmediata.',
|
||
isActive: true
|
||
}
|
||
];
|
||
|
||
const INITIAL_SETTINGS = {
|
||
storeName: 'DripZone',
|
||
slogan: 'Luxury Streetwear & Collectibles',
|
||
email: 'carlos.andres.lasso@gmail.com',
|
||
phone: '3167455877',
|
||
whatsappNumber: '573167455877',
|
||
instagramHandle: '@dripzone.co',
|
||
address: 'Bodega Central / Cali',
|
||
city: 'Cali, Colombia',
|
||
nequiAccount: '316 745 5877',
|
||
daviplataAccount: '316 745 5877',
|
||
accountHolder: 'Carlos Andrés Lasso',
|
||
boldPaymentLink: 'https://bold.co/p/carlos-lasso',
|
||
boldApiKey: '',
|
||
boldMerchantId: '',
|
||
boldQrUrl: '',
|
||
boldEnabled: true,
|
||
defaultProfitMargin: 35,
|
||
defaultDepositAmount: 10000,
|
||
};
|
||
|
||
async function seed() {
|
||
console.log('Seeding Appwrite database...');
|
||
|
||
// 1. Cities
|
||
console.log('Seeding cities...');
|
||
for (const c of INITIAL_CITIES) {
|
||
try {
|
||
await dbs.createDocument(DB_ID, 'cities', c.id, {
|
||
name: c.name,
|
||
department: c.department,
|
||
shippingCost: c.shippingCost,
|
||
deliveryTime: c.deliveryTime,
|
||
allowsContraentrega: c.allowsContraentrega,
|
||
firstExchangeFree: c.firstExchangeFree,
|
||
exchangePolicyNote: c.exchangePolicyNote,
|
||
isActive: c.isActive,
|
||
});
|
||
console.log(` + City ${c.name} (${c.id}) created.`);
|
||
} catch (e) {
|
||
if (e.code === 409) {
|
||
console.log(` . City ${c.id} already exists.`);
|
||
} else {
|
||
console.warn(` ! Error city ${c.id}:`, e.message);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 2. Payment methods
|
||
console.log('Seeding payment methods...');
|
||
for (const pm of INITIAL_PAYMENT_METHODS) {
|
||
try {
|
||
await dbs.createDocument(DB_ID, 'payment_methods', pm.id, {
|
||
name: pm.name,
|
||
type: pm.type,
|
||
description: pm.description,
|
||
requiresDeposit: pm.requiresDeposit,
|
||
depositAmount: pm.depositAmount,
|
||
accountInfo: pm.accountInfo || '',
|
||
boldPaymentLink: pm.boldPaymentLink || '',
|
||
boldQrUrl: '',
|
||
isActive: pm.isActive,
|
||
});
|
||
console.log(` + Payment Method ${pm.name} (${pm.id}) created.`);
|
||
} catch (e) {
|
||
if (e.code === 409) {
|
||
console.log(` . Payment Method ${pm.id} already exists.`);
|
||
} else {
|
||
console.warn(` ! Error PM ${pm.id}:`, e.message);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 3. Suppliers
|
||
console.log('Seeding suppliers...');
|
||
for (const s of INITIAL_SUPPLIERS) {
|
||
try {
|
||
await dbs.createDocument(DB_ID, 'suppliers', s.id, {
|
||
name: s.name,
|
||
phone: s.phone,
|
||
contactPerson: s.contactPerson || '',
|
||
address: s.address || '',
|
||
notes: s.notes || '',
|
||
isActive: s.isActive,
|
||
});
|
||
console.log(` + Supplier ${s.name} created.`);
|
||
} catch (e) {
|
||
if (e.code === 409) {
|
||
console.log(` . Supplier ${s.id} already exists.`);
|
||
} else {
|
||
console.warn(` ! Error supplier ${s.id}:`, e.message);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 4. Store settings
|
||
console.log('Seeding store settings...');
|
||
try {
|
||
await dbs.createDocument(DB_ID, 'store_settings', 'main_settings', INITIAL_SETTINGS);
|
||
console.log(' + Main store settings created.');
|
||
} catch (e) {
|
||
if (e.code === 409) {
|
||
console.log(' . Main store settings already exists.');
|
||
} else {
|
||
console.warn(' ! Error settings:', e.message);
|
||
}
|
||
}
|
||
|
||
console.log('🎉 Seeding complete!');
|
||
}
|
||
|
||
seed().catch(console.error);
|