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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
await prisma.$transaction(async (tx) => {
|
await prisma.$transaction(
|
||||||
const meta = {
|
async (tx) => {
|
||||||
createdBy: null,
|
const meta = {
|
||||||
createdAt: new Date(),
|
createdBy: null,
|
||||||
updatedBy: null,
|
createdAt: new Date(),
|
||||||
updatedAt: new Date(),
|
updatedBy: null,
|
||||||
};
|
updatedAt: new Date(),
|
||||||
|
};
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
splitChunk(province, 1000, async (r) => {
|
splitChunk(province, 1000, async (r) => {
|
||||||
return await tx.$kysely
|
return await tx.$kysely
|
||||||
.insertInto("Province")
|
.insertInto("Province")
|
||||||
.columns(["id", "name", "nameEN", "createdBy", "createdAt", "updatedBy", "updatedAt"])
|
.columns(["id", "name", "nameEN", "createdBy", "createdAt", "updatedBy", "updatedAt"])
|
||||||
.values(r.map((v) => ({ ...v, ...meta })))
|
.values(r.map((v) => ({ ...v, ...meta })))
|
||||||
.onConflict((oc) =>
|
.onConflict((oc) =>
|
||||||
oc.column("id").doUpdateSet({
|
oc.column("id").doUpdateSet({
|
||||||
name: (eb) => eb.ref("excluded.name"),
|
name: (eb) => eb.ref("excluded.name"),
|
||||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.execute();
|
.execute();
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
splitChunk(district, 2000, async (r) => {
|
splitChunk(district, 2000, async (r) => {
|
||||||
return await tx.$kysely
|
return await tx.$kysely
|
||||||
.insertInto("District")
|
.insertInto("District")
|
||||||
.columns([
|
.columns([
|
||||||
"id",
|
"id",
|
||||||
"name",
|
"name",
|
||||||
"nameEN",
|
"nameEN",
|
||||||
"provinceId",
|
"provinceId",
|
||||||
"createdBy",
|
"createdBy",
|
||||||
"createdAt",
|
"createdAt",
|
||||||
"updatedBy",
|
"updatedBy",
|
||||||
"updatedAt",
|
"updatedAt",
|
||||||
])
|
])
|
||||||
.values(r.map((v) => ({ ...v, ...meta })))
|
.values(r.map((v) => ({ ...v, ...meta })))
|
||||||
.onConflict((oc) =>
|
.onConflict((oc) =>
|
||||||
oc.column("id").doUpdateSet({
|
oc.column("id").doUpdateSet({
|
||||||
name: (eb) => eb.ref("excluded.name"),
|
name: (eb) => eb.ref("excluded.name"),
|
||||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||||
provinceId: (eb) => eb.ref("excluded.provinceId"),
|
provinceId: (eb) => eb.ref("excluded.provinceId"),
|
||||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.execute();
|
.execute();
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
splitChunk(subDistrict, 1000, async (r) => {
|
splitChunk(subDistrict, 1000, async (r) => {
|
||||||
return await tx.$kysely
|
return await tx.$kysely
|
||||||
.insertInto("SubDistrict")
|
.insertInto("SubDistrict")
|
||||||
.columns([
|
.columns([
|
||||||
"id",
|
"id",
|
||||||
"name",
|
"name",
|
||||||
"nameEN",
|
"nameEN",
|
||||||
"districtId",
|
"districtId",
|
||||||
"createdBy",
|
"createdBy",
|
||||||
"createdAt",
|
"createdAt",
|
||||||
"updatedBy",
|
"updatedBy",
|
||||||
"updatedAt",
|
"updatedAt",
|
||||||
])
|
])
|
||||||
.values(r.map((v) => ({ ...v, ...meta })))
|
.values(r.map((v) => ({ ...v, ...meta })))
|
||||||
.onConflict((oc) =>
|
.onConflict((oc) =>
|
||||||
oc.column("id").doUpdateSet({
|
oc.column("id").doUpdateSet({
|
||||||
name: (eb) => eb.ref("excluded.name"),
|
name: (eb) => eb.ref("excluded.name"),
|
||||||
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
nameEN: (eb) => eb.ref("excluded.nameEN"),
|
||||||
districtId: (eb) => eb.ref("excluded.districtId"),
|
districtId: (eb) => eb.ref("excluded.districtId"),
|
||||||
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
updatedAt: (eb) => eb.ref("excluded.updatedAt"),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.execute();
|
.execute();
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
});
|
},
|
||||||
|
{
|
||||||
|
timeout: 15_000,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
console.log("[INFO]: Sync thailand province, district and subdistrict, OK.");
|
console.log("[INFO]: Sync thailand province, district and subdistrict, OK.");
|
||||||
}
|
}
|
||||||
|
|
@ -170,67 +175,72 @@ export async function initEmploymentOffice() {
|
||||||
|
|
||||||
const list = await prisma.province.findMany();
|
const list = await prisma.province.findMany();
|
||||||
|
|
||||||
await prisma.$transaction(async (tx) => {
|
await prisma.$transaction(
|
||||||
await Promise.all(
|
async (tx) => {
|
||||||
list
|
await Promise.all(
|
||||||
.map(async (province) => {
|
list
|
||||||
if (special[province.id]) {
|
.map(async (province) => {
|
||||||
await tx.employmentOffice.deleteMany({
|
if (special[province.id]) {
|
||||||
where: { provinceId: province.id, district: { none: {} } },
|
await tx.employmentOffice.deleteMany({
|
||||||
});
|
where: { provinceId: province.id, district: { none: {} } },
|
||||||
return await Promise.all(
|
});
|
||||||
Object.entries(special[province.id]).map(async ([key, val]) => {
|
return await Promise.all(
|
||||||
const id = province.id + "-" + key.padStart(2, "0");
|
Object.entries(special[province.id]).map(async ([key, val]) => {
|
||||||
return tx.employmentOffice.upsert({
|
const id = province.id + "-" + key.padStart(2, "0");
|
||||||
where: { id },
|
return tx.employmentOffice.upsert({
|
||||||
create: {
|
where: { id },
|
||||||
id,
|
create: {
|
||||||
name: nameSpecial(province.name, +key),
|
id,
|
||||||
nameEN: nameSpecialEN(province.nameEN, +key),
|
name: nameSpecial(province.name, +key),
|
||||||
provinceId: province.id,
|
nameEN: nameSpecialEN(province.nameEN, +key),
|
||||||
district: {
|
provinceId: province.id,
|
||||||
createMany: {
|
district: {
|
||||||
data: val.map((districtId) => ({ districtId })),
|
createMany: {
|
||||||
skipDuplicates: true,
|
data: val.map((districtId) => ({ districtId })),
|
||||||
|
skipDuplicates: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
update: {
|
||||||
update: {
|
id,
|
||||||
id,
|
name: nameSpecial(province.name, +key),
|
||||||
name: nameSpecial(province.name, +key),
|
nameEN: nameSpecialEN(province.nameEN, +key),
|
||||||
nameEN: nameSpecialEN(province.nameEN, +key),
|
provinceId: province.id,
|
||||||
provinceId: province.id,
|
district: {
|
||||||
district: {
|
deleteMany: { districtId: { notIn: val } },
|
||||||
deleteMany: { districtId: { notIn: val } },
|
createMany: {
|
||||||
createMany: {
|
data: val.map((districtId) => ({ districtId })),
|
||||||
data: val.map((districtId) => ({ districtId })),
|
skipDuplicates: true,
|
||||||
skipDuplicates: true,
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
});
|
||||||
});
|
}),
|
||||||
}),
|
);
|
||||||
);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return tx.employmentOffice.upsert({
|
return tx.employmentOffice.upsert({
|
||||||
where: { id: province.id },
|
where: { id: province.id },
|
||||||
create: {
|
create: {
|
||||||
id: province.id,
|
id: province.id,
|
||||||
name: name(province.name),
|
name: name(province.name),
|
||||||
nameEN: nameEN(province.nameEN),
|
nameEN: nameEN(province.nameEN),
|
||||||
provinceId: province.id,
|
provinceId: province.id,
|
||||||
},
|
},
|
||||||
update: {
|
update: {
|
||||||
name: name(province.name),
|
name: name(province.name),
|
||||||
nameEN: nameEN(province.nameEN),
|
nameEN: nameEN(province.nameEN),
|
||||||
provinceId: province.id,
|
provinceId: province.id,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.flat(),
|
.flat(),
|
||||||
);
|
);
|
||||||
});
|
},
|
||||||
|
{
|
||||||
|
timeout: 15_000,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
console.log("[INFO]: Sync employment office, OK.");
|
console.log("[INFO]: Sync employment office, OK.");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue