@citrineos/data
Version:
The OCPP data module which includes all persistence layer implementation.
64 lines • 2.22 kB
JavaScript
// 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