@citrineos/data
Version:
The OCPP data module which includes all persistence layer implementation.
55 lines • 2.24 kB
JavaScript
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
//
// SPDX-License-Identifier: Apache-2.0
import { SequelizeRepository } from './Base.js';
import { MessageInfo } from '../model/index.js';
import { OCPP2_0_1 } from '@citrineos/base';
import { Sequelize } from 'sequelize-typescript';
import { Logger } from 'tslog';
export class SequelizeMessageInfoRepository extends SequelizeRepository {
constructor(config, logger, sequelizeInstance) {
super(config, MessageInfo.MODEL_NAME, logger, sequelizeInstance);
}
async deactivateAllByStationId(tenantId, stationId) {
await this.updateAllByQuery(tenantId, {
active: false,
}, {
where: {
stationId: stationId,
active: true,
},
returning: false,
});
}
async createOrUpdateByMessageInfoTypeAndStationId(tenantId, message, stationId, componentId) {
return await this.s.transaction(async (transaction) => {
const savedMessageInfo = await this.s.models[MessageInfo.MODEL_NAME].findOne({
where: {
stationId: stationId,
id: message.id,
},
transaction: transaction,
});
const messageInfo = {
tenantId: tenantId,
stationId: stationId,
displayComponentId: componentId ?? null,
id: message.id,
priority: message.priority,
state: message.state ?? null,
startDateTime: message.startDateTime ?? null,
endDateTime: message.endDateTime ?? null,
transactionId: message.transactionId ?? null,
message: message.message,
active: true,
};
if (savedMessageInfo) {
return (await this.updateByKey(tenantId, messageInfo, savedMessageInfo.dataValues.databaseId));
}
const createdMessageInfo = await MessageInfo.create(messageInfo, { transaction });
this.emit('created', [createdMessageInfo]);
return createdMessageInfo;
});
}
}
//# sourceMappingURL=MessageInfo.js.map