UNPKG

@citrineos/data

Version:

The OCPP data module which includes all persistence layer implementation.

55 lines 2.24 kB
// 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