import { db } from "./src/db"; import { group, opinion, zone, province } from "./src/schema"; import { Groups, Opinions, Provinces, Districts } from "./initialData"; import { createBucket, createClient } from "./src/minio"; import { Config } from "./src/config"; async function main() { try { await setupBucket(); } catch { console.error("Setting up bucket failed"); } const isInitialized = await db.query.group .findMany() .then((groups) => groups.length > 0); if (isInitialized) { console.log("Already initialized"); return; } let groupValues = Groups.map((group) => ({ name: group })); await db.insert(group).values(groupValues); let opinionValues = Opinions.map((opinion) => ({ name: opinion.name, type: opinion.choicemode, })); await db.insert(opinion).values(opinionValues); let provinceValues = Provinces.map((province) => ({ id: province.code, name: province.name_th, })); await db.insert(province).values(provinceValues); const zoneValues = Districts.map((district) => ({ id: district.code, name: district.name_th, province: district.province_code, })); await db.insert(zone).values(zoneValues); console.log("Done"); } async function setupBucket() { const BucketPolicy = { Version: "2012-10-17", Statement: [ { Action: ["s3:GetObject"], Effect: "Allow", Principal: "*", Resource: [`arn:aws:s3:::${Config.bucketName}/*`], Sid: "AllowAnonymousAccess", }, ], }; let mc = createClient(); await createBucket(mc); await mc.setBucketPolicy(Config.bucketName, JSON.stringify(BucketPolicy)); } main();