Files
sorvor-back/addMetadata.ts
Thanu Poptiphueng f7bcb2f476
All checks were successful
backend-action / build-image (push) Successful in 26s
added verified field
2024-05-10 12:32:23 +07:00

60 lines
1.6 KiB
TypeScript

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();