UNPKG

@citrineos/data

Version:

The OCPP data module which includes all persistence layer implementation.

58 lines 2.08 kB
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project // // SPDX-License-Identifier: Apache-2.0 import { SequelizeRepository } from './Base.js'; import { Connector, Tariff } from '../model/index.js'; import { Sequelize } from 'sequelize-typescript'; import { Logger } from 'tslog'; export class SequelizeTariffRepository extends SequelizeRepository { constructor(config, logger, sequelizeInstance) { super(config, Tariff.MODEL_NAME, logger, sequelizeInstance); } async findByConnectorId(tenantId, connectorId) { return super.readOnlyOneByQuery(tenantId, { include: [ { model: Connector, where: { id: connectorId }, required: true, }, ], }); } 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