fix: timeout in some case
All checks were successful
Spell Check / Spell Check with Typos (push) Successful in 4s
All checks were successful
Spell Check / Spell Check with Typos (push) Successful in 4s
This commit is contained in:
parent
0772e4710a
commit
158a6ff163
1 changed files with 142 additions and 132 deletions
|
|
@ -62,85 +62,90 @@ export async function initThailandAreaDatabase() {
|
|||
return result;
|
||||
}
|
||||
|
||||
await prisma.$transaction(async (tx) => {
|
||||
const meta = {
|
||||
createdBy: null,
|
||||
createdAt: new Date(),
|
||||
updatedBy: null,
|
||||
updatedAt: new Date(),
|
||||
};
|
||||
await prisma.$transaction(
|
||||
async (tx) => {
|
||||
const meta = {
|
||||
createdBy: null,
|
||||
createdAt: new Date(),
|
||||
updatedBy: null,
|
||||
updatedAt: new Date(),
|
||||
};
|
||||
|
||||
await Promise.all(
|
||||
splitChunk(province, 1000, async (r) => {
|
||||
return await tx.$kysely
|
||||
.insertInto("Province")
|
||||
.columns(["id", "name", "nameEN", "createdBy", "createdAt", "updatedBy", "updatedAt"])
|
||||
.values(r.map((v) => ({ ...v, ...meta })))
|
||||
.onConflict((oc) =>
|
||||
oc.column("id").doUpdateSet({
|
||||
name: (eb) => eb.ref("excluded.name"),
|
||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||
}),
|
||||
)
|
||||
.execute();
|
||||
}),
|
||||
);
|
||||
await Promise.all(
|
||||
splitChunk(province, 1000, async (r) => {
|
||||
return await tx.$kysely
|
||||
.insertInto("Province")
|
||||
.columns(["id", "name", "nameEN", "createdBy", "createdAt", "updatedBy", "updatedAt"])
|
||||
.values(r.map((v) => ({ ...v, ...meta })))
|
||||
.onConflict((oc) =>
|
||||
oc.column("id").doUpdateSet({
|
||||
name: (eb) => eb.ref("excluded.name"),
|
||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||
}),
|
||||
)
|
||||
.execute();
|
||||
}),
|
||||
);
|
||||
|
||||
await Promise.all(
|
||||
splitChunk(district, 2000, async (r) => {
|
||||
return await tx.$kysely
|
||||
.insertInto("District")
|
||||
.columns([
|
||||
"id",
|
||||
"name",
|
||||
"nameEN",
|
||||
"provinceId",
|
||||
"createdBy",
|
||||
"createdAt",
|
||||
"updatedBy",
|
||||
"updatedAt",
|
||||
])
|
||||
.values(r.map((v) => ({ ...v, ...meta })))
|
||||
.onConflict((oc) =>
|
||||
oc.column("id").doUpdateSet({
|
||||
name: (eb) => eb.ref("excluded.name"),
|
||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||
provinceId: (eb) => eb.ref("excluded.provinceId"),
|
||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||
}),
|
||||
)
|
||||
.execute();
|
||||
}),
|
||||
);
|
||||
await Promise.all(
|
||||
splitChunk(district, 2000, async (r) => {
|
||||
return await tx.$kysely
|
||||
.insertInto("District")
|
||||
.columns([
|
||||
"id",
|
||||
"name",
|
||||
"nameEN",
|
||||
"provinceId",
|
||||
"createdBy",
|
||||
"createdAt",
|
||||
"updatedBy",
|
||||
"updatedAt",
|
||||
])
|
||||
.values(r.map((v) => ({ ...v, ...meta })))
|
||||
.onConflict((oc) =>
|
||||
oc.column("id").doUpdateSet({
|
||||
name: (eb) => eb.ref("excluded.name"),
|
||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||
provinceId: (eb) => eb.ref("excluded.provinceId"),
|
||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||
}),
|
||||
)
|
||||
.execute();
|
||||
}),
|
||||
);
|
||||
|
||||
await Promise.all(
|
||||
splitChunk(subDistrict, 1000, async (r) => {
|
||||
return await tx.$kysely
|
||||
.insertInto("SubDistrict")
|
||||
.columns([
|
||||
"id",
|
||||
"name",
|
||||
"nameEN",
|
||||
"districtId",
|
||||
"createdBy",
|
||||
"createdAt",
|
||||
"updatedBy",
|
||||
"updatedAt",
|
||||
])
|
||||
.values(r.map((v) => ({ ...v, ...meta })))
|
||||
.onConflict((oc) =>
|
||||
oc.column("id").doUpdateSet({
|
||||
name: (eb) => eb.ref("excluded.name"),
|
||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||
districtId: (eb) => eb.ref("excluded.districtId"),
|
||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||
}),
|
||||
)
|
||||
.execute();
|
||||
}),
|
||||
);
|
||||
});
|
||||
await Promise.all(
|
||||
splitChunk(subDistrict, 1000, async (r) => {
|
||||
return await tx.$kysely
|
||||
.insertInto("SubDistrict")
|
||||
.columns([
|
||||
"id",
|
||||
"name",
|
||||
"nameEN",
|
||||
"districtId",
|
||||
"createdBy",
|
||||
"createdAt",
|
||||
"updatedBy",
|
||||
"updatedAt",
|
||||
])
|
||||
.values(r.map((v) => ({ ...v, ...meta })))
|
||||
.onConflict((oc) =>
|
||||
oc.column("id").doUpdateSet({
|
||||
name: (eb) => eb.ref("excluded.name"),
|
||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||
districtId: (eb) => eb.ref("excluded.districtId"),
|
||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||
}),
|
||||
)
|
||||
.execute();
|
||||
}),
|
||||
);
|
||||
},
|
||||
{
|
||||
timeout: 15_000,
|
||||
},
|
||||
);
|
||||
|
||||
console.log("[INFO]: Sync thailand province, district and subdistrict, OK.");
|
||||
}
|
||||
|
|
@ -170,67 +175,72 @@ export async function initEmploymentOffice() {
|
|||
|
||||
const list = await prisma.province.findMany();
|
||||
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await Promise.all(
|
||||
list
|
||||
.map(async (province) => {
|
||||
if (special[province.id]) {
|
||||
await tx.employmentOffice.deleteMany({
|
||||
where: { provinceId: province.id, district: { none: {} } },
|
||||
});
|
||||
return await Promise.all(
|
||||
Object.entries(special[province.id]).map(async ([key, val]) => {
|
||||
const id = province.id + "-" + key.padStart(2, "0");
|
||||
return tx.employmentOffice.upsert({
|
||||
where: { id },
|
||||
create: {
|
||||
id,
|
||||
name: nameSpecial(province.name, +key),
|
||||
nameEN: nameSpecialEN(province.nameEN, +key),
|
||||
provinceId: province.id,
|
||||
district: {
|
||||
createMany: {
|
||||
data: val.map((districtId) => ({ districtId })),
|
||||
skipDuplicates: true,
|
||||
await prisma.$transaction(
|
||||
async (tx) => {
|
||||
await Promise.all(
|
||||
list
|
||||
.map(async (province) => {
|
||||
if (special[province.id]) {
|
||||
await tx.employmentOffice.deleteMany({
|
||||
where: { provinceId: province.id, district: { none: {} } },
|
||||
});
|
||||
return await Promise.all(
|
||||
Object.entries(special[province.id]).map(async ([key, val]) => {
|
||||
const id = province.id + "-" + key.padStart(2, "0");
|
||||
return tx.employmentOffice.upsert({
|
||||
where: { id },
|
||||
create: {
|
||||
id,
|
||||
name: nameSpecial(province.name, +key),
|
||||
nameEN: nameSpecialEN(province.nameEN, +key),
|
||||
provinceId: province.id,
|
||||
district: {
|
||||
createMany: {
|
||||
data: val.map((districtId) => ({ districtId })),
|
||||
skipDuplicates: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
update: {
|
||||
id,
|
||||
name: nameSpecial(province.name, +key),
|
||||
nameEN: nameSpecialEN(province.nameEN, +key),
|
||||
provinceId: province.id,
|
||||
district: {
|
||||
deleteMany: { districtId: { notIn: val } },
|
||||
createMany: {
|
||||
data: val.map((districtId) => ({ districtId })),
|
||||
skipDuplicates: true,
|
||||
update: {
|
||||
id,
|
||||
name: nameSpecial(province.name, +key),
|
||||
nameEN: nameSpecialEN(province.nameEN, +key),
|
||||
provinceId: province.id,
|
||||
district: {
|
||||
deleteMany: { districtId: { notIn: val } },
|
||||
createMany: {
|
||||
data: val.map((districtId) => ({ districtId })),
|
||||
skipDuplicates: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
return tx.employmentOffice.upsert({
|
||||
where: { id: province.id },
|
||||
create: {
|
||||
id: province.id,
|
||||
name: name(province.name),
|
||||
nameEN: nameEN(province.nameEN),
|
||||
provinceId: province.id,
|
||||
},
|
||||
update: {
|
||||
name: name(province.name),
|
||||
nameEN: nameEN(province.nameEN),
|
||||
provinceId: province.id,
|
||||
},
|
||||
});
|
||||
})
|
||||
.flat(),
|
||||
);
|
||||
});
|
||||
return tx.employmentOffice.upsert({
|
||||
where: { id: province.id },
|
||||
create: {
|
||||
id: province.id,
|
||||
name: name(province.name),
|
||||
nameEN: nameEN(province.nameEN),
|
||||
provinceId: province.id,
|
||||
},
|
||||
update: {
|
||||
name: name(province.name),
|
||||
nameEN: nameEN(province.nameEN),
|
||||
provinceId: province.id,
|
||||
},
|
||||
});
|
||||
})
|
||||
.flat(),
|
||||
);
|
||||
},
|
||||
{
|
||||
timeout: 15_000,
|
||||
},
|
||||
);
|
||||
|
||||
console.log("[INFO]: Sync employment office, OK.");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue