UNPKG

@citrineos/data

Version:

The OCPP data module which includes all persistence layer implementation.

64 lines 2.22 kB
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project // // SPDX-License-Identifier: Apache-2.0 import { SequelizeRepository } from './Base.js'; import { Tariff } from '../model/index.js'; import { Sequelize } from 'sequelize-typescript'; import { Logger } from 'tslog'; import { Op } from 'sequelize'; export class SequelizeTariffRepository extends SequelizeRepository { constructor(config, logger, sequelizeInstance) { super(config, Tariff.MODEL_NAME, logger, sequelizeInstance); } async findByStationIds(tenantId, stationIds) { return super.readAllByQuery(tenantId, { where: { stationId: { [Op.in]: stationIds, }, }, }); } async findByStationId(tenantId, stationId) { return super.readOnlyOneByQuery(tenantId, { where: { stationId: stationId, }, }); } async upsertTariff(tenantId, tariff) { tariff.tenantId = tenantId; return await this.s.transaction(async (transaction) => { const savedTariff = await this.readOnlyOneByQuery(tenantId, { where: { id: tariff.id }, transaction, }); if (savedTariff) { const updatedTariff = await savedTariff.set(tariff.data).save({ transaction }); this.emit('updated', [updatedTariff]); return updatedTariff; } const createdTariff = await tariff.save({ transaction }); this.emit('created', [createdTariff]); return createdTariff; }); } async readAllByQuerystring(tenantId, query) { return super.readAllByQuery(tenantId, { where: { ...(query.id && { id: query.id }), }, }); } async deleteAllByQuerystring(tenantId, query) { if (!query.id) { throw new Error('Must specify at least one query parameter'); } return super.deleteAllByQuery(tenantId, { where: { ...(query.id && { id: query.id }), }, }); } } //# sourceMappingURL=Tariff.js.map