61 lines
2.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.postalCodesService = void 0;
const database_1 = require("../../../config/database");
exports.postalCodesService = {
async upsert(data) {
return database_1.prisma.postalCodeCache.upsert({
where: { postalCode: data.postalCode },
update: {
city: data.city ?? undefined,
province: data.province ?? undefined,
centroidLat: data.centroidLat ?? undefined,
centroidLng: data.centroidLng ?? undefined,
lastUpdated: new Date(),
},
create: {
postalCode: data.postalCode,
city: data.city ?? null,
province: data.province ?? null,
centroidLat: data.centroidLat ?? null,
centroidLng: data.centroidLng ?? null,
},
});
},
async findByPostalCode(code) {
return database_1.prisma.postalCodeCache.findUnique({
where: { postalCode: code },
});
},
async findAll(filters) {
const { page, limit, search } = filters;
const skip = (page - 1) * limit;
const where = {};
if (search) {
where.OR = [
{ postalCode: { contains: search, mode: 'insensitive' } },
{ city: { contains: search, mode: 'insensitive' } },
{ province: { contains: search, mode: 'insensitive' } },
];
}
const [items, total] = await Promise.all([
database_1.prisma.postalCodeCache.findMany({
where,
skip,
take: limit,
orderBy: { lastUpdated: 'desc' },
}),
database_1.prisma.postalCodeCache.count({ where }),
]);
return {
postalCodes: items,
pagination: { page, limit, total, totalPages: Math.ceil(total / limit) },
};
},
async delete(code) {
return database_1.prisma.postalCodeCache.delete({
where: { postalCode: code },
});
},
};
//# sourceMappingURL=postal-codes.service.js.map