@zetra/citrineos-data 1.8.3-fork.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +9 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/dtos/GenerateCertificateChainRequest.d.ts +13 -0
- package/dist/interfaces/dtos/GenerateCertificateChainRequest.js +30 -0
- package/dist/interfaces/dtos/GenerateCertificateChainRequest.js.map +1 -0
- package/dist/interfaces/dtos/InstallRootCertificateRequest.d.ts +9 -0
- package/dist/interfaces/dtos/InstallRootCertificateRequest.js +22 -0
- package/dist/interfaces/dtos/InstallRootCertificateRequest.js.map +1 -0
- package/dist/interfaces/dtos/RegenerateExistingCertificate.d.ts +4 -0
- package/dist/interfaces/dtos/RegenerateExistingCertificate.js +8 -0
- package/dist/interfaces/dtos/RegenerateExistingCertificate.js.map +1 -0
- package/dist/interfaces/dtos/TlsCertificatesRequest.d.ts +7 -0
- package/dist/interfaces/dtos/TlsCertificatesRequest.js +17 -0
- package/dist/interfaces/dtos/TlsCertificatesRequest.js.map +1 -0
- package/dist/interfaces/dtos/UploadExistingCertificate.d.ts +6 -0
- package/dist/interfaces/dtos/UploadExistingCertificate.js +10 -0
- package/dist/interfaces/dtos/UploadExistingCertificate.js.map +1 -0
- package/dist/interfaces/index.d.ts +35 -0
- package/dist/interfaces/index.js +28 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/projections/AuthorizationRestrictions.d.ts +18 -0
- package/dist/interfaces/projections/AuthorizationRestrictions.js +5 -0
- package/dist/interfaces/projections/AuthorizationRestrictions.js.map +1 -0
- package/dist/interfaces/projections/schemas/AuthorizationRestrictionsSchema.json +20 -0
- package/dist/interfaces/projections/schemas/TariffSchema.json +37 -0
- package/dist/interfaces/queries/Authorization.d.ts +5 -0
- package/dist/interfaces/queries/Authorization.js +17 -0
- package/dist/interfaces/queries/Authorization.js.map +1 -0
- package/dist/interfaces/queries/ChargingStation.d.ts +5 -0
- package/dist/interfaces/queries/ChargingStation.js +18 -0
- package/dist/interfaces/queries/ChargingStation.js.map +1 -0
- package/dist/interfaces/queries/Connection.d.ts +5 -0
- package/dist/interfaces/queries/Connection.js +17 -0
- package/dist/interfaces/queries/Connection.js.map +1 -0
- package/dist/interfaces/queries/Model.d.ts +5 -0
- package/dist/interfaces/queries/Model.js +18 -0
- package/dist/interfaces/queries/Model.js.map +1 -0
- package/dist/interfaces/queries/NetworkProfile.d.ts +11 -0
- package/dist/interfaces/queries/NetworkProfile.js +36 -0
- package/dist/interfaces/queries/NetworkProfile.js.map +1 -0
- package/dist/interfaces/queries/RootCertificate.d.ts +4 -0
- package/dist/interfaces/queries/RootCertificate.js +100 -0
- package/dist/interfaces/queries/RootCertificate.js.map +1 -0
- package/dist/interfaces/queries/Subscription.d.ts +1 -0
- package/dist/interfaces/queries/Subscription.js +37 -0
- package/dist/interfaces/queries/Subscription.js.map +1 -0
- package/dist/interfaces/queries/Tariff.d.ts +5 -0
- package/dist/interfaces/queries/Tariff.js +17 -0
- package/dist/interfaces/queries/Tariff.js.map +1 -0
- package/dist/interfaces/queries/Tenant.d.ts +5 -0
- package/dist/interfaces/queries/Tenant.js +41 -0
- package/dist/interfaces/queries/Tenant.js.map +1 -0
- package/dist/interfaces/queries/TlsCertificate.d.ts +5 -0
- package/dist/interfaces/queries/TlsCertificate.js +32 -0
- package/dist/interfaces/queries/TlsCertificate.js.map +1 -0
- package/dist/interfaces/queries/TransactionEvent.d.ts +6 -0
- package/dist/interfaces/queries/TransactionEvent.js +23 -0
- package/dist/interfaces/queries/TransactionEvent.js.map +1 -0
- package/dist/interfaces/queries/UpdateChargingStationPasswordQuery.d.ts +5 -0
- package/dist/interfaces/queries/UpdateChargingStationPasswordQuery.js +17 -0
- package/dist/interfaces/queries/UpdateChargingStationPasswordQuery.js.map +1 -0
- package/dist/interfaces/queries/VariableAttribute.d.ts +21 -0
- package/dist/interfaces/queries/VariableAttribute.js +71 -0
- package/dist/interfaces/queries/VariableAttribute.js.map +1 -0
- package/dist/interfaces/queries/Websocket.d.ts +17 -0
- package/dist/interfaces/queries/Websocket.js +115 -0
- package/dist/interfaces/queries/Websocket.js.map +1 -0
- package/dist/interfaces/repositories.d.ts +164 -0
- package/dist/interfaces/repositories.js +5 -0
- package/dist/interfaces/repositories.js.map +1 -0
- package/dist/layers/sequelize/index.d.ts +51 -0
- package/dist/layers/sequelize/index.js +58 -0
- package/dist/layers/sequelize/index.js.map +1 -0
- package/dist/layers/sequelize/mapper/1.6/AuthorizationMapper.d.ts +6 -0
- package/dist/layers/sequelize/mapper/1.6/AuthorizationMapper.js +37 -0
- package/dist/layers/sequelize/mapper/1.6/AuthorizationMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/1.6/BootMapper.d.ts +4 -0
- package/dist/layers/sequelize/mapper/1.6/BootMapper.js +19 -0
- package/dist/layers/sequelize/mapper/1.6/BootMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/1.6/ChargingProfileMapper.d.ts +66 -0
- package/dist/layers/sequelize/mapper/1.6/ChargingProfileMapper.js +82 -0
- package/dist/layers/sequelize/mapper/1.6/ChargingProfileMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/1.6/LocationMapper.d.ts +6 -0
- package/dist/layers/sequelize/mapper/1.6/LocationMapper.js +69 -0
- package/dist/layers/sequelize/mapper/1.6/LocationMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/1.6/MeterValueMapper.d.ts +65 -0
- package/dist/layers/sequelize/mapper/1.6/MeterValueMapper.js +431 -0
- package/dist/layers/sequelize/mapper/1.6/MeterValueMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/1.6/index.d.ts +5 -0
- package/dist/layers/sequelize/mapper/1.6/index.js +9 -0
- package/dist/layers/sequelize/mapper/1.6/index.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/AuthorizationMapper.d.ts +14 -0
- package/dist/layers/sequelize/mapper/2.0.1/AuthorizationMapper.js +153 -0
- package/dist/layers/sequelize/mapper/2.0.1/AuthorizationMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/BootMapper.d.ts +5 -0
- package/dist/layers/sequelize/mapper/2.0.1/BootMapper.js +29 -0
- package/dist/layers/sequelize/mapper/2.0.1/BootMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/ChargingProfileMapper.d.ts +84 -0
- package/dist/layers/sequelize/mapper/2.0.1/ChargingProfileMapper.js +152 -0
- package/dist/layers/sequelize/mapper/2.0.1/ChargingProfileMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/LocationMapper.d.ts +5 -0
- package/dist/layers/sequelize/mapper/2.0.1/LocationMapper.js +23 -0
- package/dist/layers/sequelize/mapper/2.0.1/LocationMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/MeterValueMapper.d.ts +45 -0
- package/dist/layers/sequelize/mapper/2.0.1/MeterValueMapper.js +375 -0
- package/dist/layers/sequelize/mapper/2.0.1/MeterValueMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/TransactionMapper.d.ts +5 -0
- package/dist/layers/sequelize/mapper/2.0.1/TransactionMapper.js +18 -0
- package/dist/layers/sequelize/mapper/2.0.1/TransactionMapper.js.map +1 -0
- package/dist/layers/sequelize/mapper/2.0.1/index.d.ts +6 -0
- package/dist/layers/sequelize/mapper/2.0.1/index.js +10 -0
- package/dist/layers/sequelize/mapper/2.0.1/index.js.map +1 -0
- package/dist/layers/sequelize/model/AsyncJob/AsyncJobStatus.d.ts +45 -0
- package/dist/layers/sequelize/model/AsyncJob/AsyncJobStatus.js +137 -0
- package/dist/layers/sequelize/model/AsyncJob/AsyncJobStatus.js.map +1 -0
- package/dist/layers/sequelize/model/AsyncJob/index.d.ts +1 -0
- package/dist/layers/sequelize/model/AsyncJob/index.js +5 -0
- package/dist/layers/sequelize/model/AsyncJob/index.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/Authorization.d.ts +29 -0
- package/dist/layers/sequelize/model/Authorization/Authorization.js +122 -0
- package/dist/layers/sequelize/model/Authorization/Authorization.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/LocalListAuthorization.d.ts +39 -0
- package/dist/layers/sequelize/model/Authorization/LocalListAuthorization.js +141 -0
- package/dist/layers/sequelize/model/Authorization/LocalListAuthorization.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/LocalListVersion.d.ts +15 -0
- package/dist/layers/sequelize/model/Authorization/LocalListVersion.js +74 -0
- package/dist/layers/sequelize/model/Authorization/LocalListVersion.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/LocalListVersionAuthorization.d.ts +11 -0
- package/dist/layers/sequelize/model/Authorization/LocalListVersionAuthorization.js +69 -0
- package/dist/layers/sequelize/model/Authorization/LocalListVersionAuthorization.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/SendLocalList.d.ts +17 -0
- package/dist/layers/sequelize/model/Authorization/SendLocalList.js +108 -0
- package/dist/layers/sequelize/model/Authorization/SendLocalList.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/SendLocalListAuthorization.d.ts +11 -0
- package/dist/layers/sequelize/model/Authorization/SendLocalListAuthorization.js +69 -0
- package/dist/layers/sequelize/model/Authorization/SendLocalListAuthorization.js.map +1 -0
- package/dist/layers/sequelize/model/Authorization/index.d.ts +6 -0
- package/dist/layers/sequelize/model/Authorization/index.js +10 -0
- package/dist/layers/sequelize/model/Authorization/index.js.map +1 -0
- package/dist/layers/sequelize/model/AuthorizationTenant.d.ts +5 -0
- package/dist/layers/sequelize/model/AuthorizationTenant.js +32 -0
- package/dist/layers/sequelize/model/AuthorizationTenant.js.map +1 -0
- package/dist/layers/sequelize/model/BaseModelWithTenant.d.ts +8 -0
- package/dist/layers/sequelize/model/BaseModelWithTenant.js +50 -0
- package/dist/layers/sequelize/model/BaseModelWithTenant.js.map +1 -0
- package/dist/layers/sequelize/model/Boot.d.ts +29 -0
- package/dist/layers/sequelize/model/Boot.js +112 -0
- package/dist/layers/sequelize/model/Boot.js.map +1 -0
- package/dist/layers/sequelize/model/Cdrs/Cdrs.d.ts +105 -0
- package/dist/layers/sequelize/model/Cdrs/Cdrs.js +180 -0
- package/dist/layers/sequelize/model/Cdrs/Cdrs.js.map +1 -0
- package/dist/layers/sequelize/model/Cdrs/index.d.ts +1 -0
- package/dist/layers/sequelize/model/Cdrs/index.js +2 -0
- package/dist/layers/sequelize/model/Cdrs/index.js.map +1 -0
- package/dist/layers/sequelize/model/Certificate/Certificate.d.ts +27 -0
- package/dist/layers/sequelize/model/Certificate/Certificate.js +128 -0
- package/dist/layers/sequelize/model/Certificate/Certificate.js.map +1 -0
- package/dist/layers/sequelize/model/Certificate/DeleteCertificateAttempt.d.ts +17 -0
- package/dist/layers/sequelize/model/Certificate/DeleteCertificateAttempt.js +95 -0
- package/dist/layers/sequelize/model/Certificate/DeleteCertificateAttempt.js.map +1 -0
- package/dist/layers/sequelize/model/Certificate/InstallCertificateAttempt.d.ts +17 -0
- package/dist/layers/sequelize/model/Certificate/InstallCertificateAttempt.js +98 -0
- package/dist/layers/sequelize/model/Certificate/InstallCertificateAttempt.js.map +1 -0
- package/dist/layers/sequelize/model/Certificate/InstalledCertificate.d.ts +18 -0
- package/dist/layers/sequelize/model/Certificate/InstalledCertificate.js +108 -0
- package/dist/layers/sequelize/model/Certificate/InstalledCertificate.js.map +1 -0
- package/dist/layers/sequelize/model/Certificate/index.d.ts +11 -0
- package/dist/layers/sequelize/model/Certificate/index.js +17 -0
- package/dist/layers/sequelize/model/Certificate/index.js.map +1 -0
- package/dist/layers/sequelize/model/ChangeConfiguration.d.ts +13 -0
- package/dist/layers/sequelize/model/ChangeConfiguration.js +80 -0
- package/dist/layers/sequelize/model/ChangeConfiguration.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingNeeds.d.ts +27 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingNeeds.js +99 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingNeeds.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingProfile.d.ts +31 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingProfile.js +141 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingProfile.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingSchedule.d.ts +28 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingSchedule.js +118 -0
- package/dist/layers/sequelize/model/ChargingProfile/ChargingSchedule.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingProfile/CompositeSchedule.d.ts +16 -0
- package/dist/layers/sequelize/model/ChargingProfile/CompositeSchedule.js +86 -0
- package/dist/layers/sequelize/model/ChargingProfile/CompositeSchedule.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingProfile/SalesTariff.d.ts +24 -0
- package/dist/layers/sequelize/model/ChargingProfile/SalesTariff.js +91 -0
- package/dist/layers/sequelize/model/ChargingProfile/SalesTariff.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingProfile/index.d.ts +5 -0
- package/dist/layers/sequelize/model/ChargingProfile/index.js +9 -0
- package/dist/layers/sequelize/model/ChargingProfile/index.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingStationSecurityInfo.d.ts +14 -0
- package/dist/layers/sequelize/model/ChargingStationSecurityInfo.js +76 -0
- package/dist/layers/sequelize/model/ChargingStationSecurityInfo.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingStationSequence/ChargingStationSequence.d.ts +14 -0
- package/dist/layers/sequelize/model/ChargingStationSequence/ChargingStationSequence.js +85 -0
- package/dist/layers/sequelize/model/ChargingStationSequence/ChargingStationSequence.js.map +1 -0
- package/dist/layers/sequelize/model/ChargingStationSequence/index.d.ts +1 -0
- package/dist/layers/sequelize/model/ChargingStationSequence/index.js +5 -0
- package/dist/layers/sequelize/model/ChargingStationSequence/index.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/Component.d.ts +26 -0
- package/dist/layers/sequelize/model/DeviceModel/Component.js +99 -0
- package/dist/layers/sequelize/model/DeviceModel/Component.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/ComponentVariable.d.ts +11 -0
- package/dist/layers/sequelize/model/DeviceModel/ComponentVariable.js +69 -0
- package/dist/layers/sequelize/model/DeviceModel/ComponentVariable.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/EvseType.d.ts +17 -0
- package/dist/layers/sequelize/model/DeviceModel/EvseType.js +83 -0
- package/dist/layers/sequelize/model/DeviceModel/EvseType.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/Variable.d.ts +27 -0
- package/dist/layers/sequelize/model/DeviceModel/Variable.js +96 -0
- package/dist/layers/sequelize/model/DeviceModel/Variable.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableAttribute.d.ts +38 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableAttribute.js +242 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableAttribute.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableCharacteristics.d.ts +25 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableCharacteristics.js +90 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableCharacteristics.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableStatus.d.ts +19 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableStatus.js +75 -0
- package/dist/layers/sequelize/model/DeviceModel/VariableStatus.js.map +1 -0
- package/dist/layers/sequelize/model/DeviceModel/index.d.ts +6 -0
- package/dist/layers/sequelize/model/DeviceModel/index.js +10 -0
- package/dist/layers/sequelize/model/DeviceModel/index.js.map +1 -0
- package/dist/layers/sequelize/model/Location/ChargingStation.d.ts +56 -0
- package/dist/layers/sequelize/model/Location/ChargingStation.js +178 -0
- package/dist/layers/sequelize/model/Location/ChargingStation.js.map +1 -0
- package/dist/layers/sequelize/model/Location/ChargingStationNetworkProfile.d.ts +27 -0
- package/dist/layers/sequelize/model/Location/ChargingStationNetworkProfile.js +93 -0
- package/dist/layers/sequelize/model/Location/ChargingStationNetworkProfile.js.map +1 -0
- package/dist/layers/sequelize/model/Location/Connector.d.ts +32 -0
- package/dist/layers/sequelize/model/Location/Connector.js +166 -0
- package/dist/layers/sequelize/model/Location/Connector.js.map +1 -0
- package/dist/layers/sequelize/model/Location/Evse.d.ts +28 -0
- package/dist/layers/sequelize/model/Location/Evse.js +122 -0
- package/dist/layers/sequelize/model/Location/Evse.js.map +1 -0
- package/dist/layers/sequelize/model/Location/LatestStatusNotification.d.ts +16 -0
- package/dist/layers/sequelize/model/Location/LatestStatusNotification.js +74 -0
- package/dist/layers/sequelize/model/Location/LatestStatusNotification.js.map +1 -0
- package/dist/layers/sequelize/model/Location/Location.d.ts +44 -0
- package/dist/layers/sequelize/model/Location/Location.js +182 -0
- package/dist/layers/sequelize/model/Location/Location.js.map +1 -0
- package/dist/layers/sequelize/model/Location/ServerNetworkProfile.d.ts +26 -0
- package/dist/layers/sequelize/model/Location/ServerNetworkProfile.js +120 -0
- package/dist/layers/sequelize/model/Location/ServerNetworkProfile.js.map +1 -0
- package/dist/layers/sequelize/model/Location/SetNetworkProfile.d.ts +52 -0
- package/dist/layers/sequelize/model/Location/SetNetworkProfile.js +120 -0
- package/dist/layers/sequelize/model/Location/SetNetworkProfile.js.map +1 -0
- package/dist/layers/sequelize/model/Location/StatusNotification.d.ts +20 -0
- package/dist/layers/sequelize/model/Location/StatusNotification.js +100 -0
- package/dist/layers/sequelize/model/Location/StatusNotification.js.map +1 -0
- package/dist/layers/sequelize/model/Location/index.d.ts +9 -0
- package/dist/layers/sequelize/model/Location/index.js +13 -0
- package/dist/layers/sequelize/model/Location/index.js.map +1 -0
- package/dist/layers/sequelize/model/MessageInfo/MessageInfo.d.ts +29 -0
- package/dist/layers/sequelize/model/MessageInfo/MessageInfo.js +126 -0
- package/dist/layers/sequelize/model/MessageInfo/MessageInfo.js.map +1 -0
- package/dist/layers/sequelize/model/MessageInfo/index.d.ts +1 -0
- package/dist/layers/sequelize/model/MessageInfo/index.js +5 -0
- package/dist/layers/sequelize/model/MessageInfo/index.js.map +1 -0
- package/dist/layers/sequelize/model/OCPPMessage.d.ts +21 -0
- package/dist/layers/sequelize/model/OCPPMessage.js +110 -0
- package/dist/layers/sequelize/model/OCPPMessage.js.map +1 -0
- package/dist/layers/sequelize/model/Reservation.d.ts +29 -0
- package/dist/layers/sequelize/model/Reservation.js +116 -0
- package/dist/layers/sequelize/model/Reservation.js.map +1 -0
- package/dist/layers/sequelize/model/SecurityEvent.d.ts +18 -0
- package/dist/layers/sequelize/model/SecurityEvent.js +78 -0
- package/dist/layers/sequelize/model/SecurityEvent.js.map +1 -0
- package/dist/layers/sequelize/model/Subscription/Subscription.d.ts +16 -0
- package/dist/layers/sequelize/model/Subscription/Subscription.js +94 -0
- package/dist/layers/sequelize/model/Subscription/Subscription.js.map +1 -0
- package/dist/layers/sequelize/model/Subscription/index.d.ts +1 -0
- package/dist/layers/sequelize/model/Subscription/index.js +5 -0
- package/dist/layers/sequelize/model/Subscription/index.js.map +1 -0
- package/dist/layers/sequelize/model/Tariff/TariffElements.d.ts +12 -0
- package/dist/layers/sequelize/model/Tariff/TariffElements.js +57 -0
- package/dist/layers/sequelize/model/Tariff/TariffElements.js.map +1 -0
- package/dist/layers/sequelize/model/Tariff/Tariffs.d.ts +37 -0
- package/dist/layers/sequelize/model/Tariff/Tariffs.js +181 -0
- package/dist/layers/sequelize/model/Tariff/Tariffs.js.map +1 -0
- package/dist/layers/sequelize/model/Tariff/index.d.ts +1 -0
- package/dist/layers/sequelize/model/Tariff/index.js +5 -0
- package/dist/layers/sequelize/model/Tariff/index.js.map +1 -0
- package/dist/layers/sequelize/model/Tenant.d.ts +96 -0
- package/dist/layers/sequelize/model/Tenant.js +268 -0
- package/dist/layers/sequelize/model/Tenant.js.map +1 -0
- package/dist/layers/sequelize/model/TenantPartner.d.ts +14 -0
- package/dist/layers/sequelize/model/TenantPartner.js +70 -0
- package/dist/layers/sequelize/model/TenantPartner.js.map +1 -0
- package/dist/layers/sequelize/model/TransactionEvent/MeterValue.d.ts +18 -0
- package/dist/layers/sequelize/model/TransactionEvent/MeterValue.js +98 -0
- package/dist/layers/sequelize/model/TransactionEvent/MeterValue.js.map +1 -0
- package/dist/layers/sequelize/model/TransactionEvent/StartTransaction.d.ts +19 -0
- package/dist/layers/sequelize/model/TransactionEvent/StartTransaction.js +96 -0
- package/dist/layers/sequelize/model/TransactionEvent/StartTransaction.js.map +1 -0
- package/dist/layers/sequelize/model/TransactionEvent/StopTransaction.d.ts +20 -0
- package/dist/layers/sequelize/model/TransactionEvent/StopTransaction.js +100 -0
- package/dist/layers/sequelize/model/TransactionEvent/StopTransaction.js.map +1 -0
- package/dist/layers/sequelize/model/TransactionEvent/Transaction.d.ts +48 -0
- package/dist/layers/sequelize/model/TransactionEvent/Transaction.js +216 -0
- package/dist/layers/sequelize/model/TransactionEvent/Transaction.js.map +1 -0
- package/dist/layers/sequelize/model/TransactionEvent/TransactionEvent.d.ts +30 -0
- package/dist/layers/sequelize/model/TransactionEvent/TransactionEvent.js +129 -0
- package/dist/layers/sequelize/model/TransactionEvent/TransactionEvent.js.map +1 -0
- package/dist/layers/sequelize/model/TransactionEvent/index.d.ts +5 -0
- package/dist/layers/sequelize/model/TransactionEvent/index.js +9 -0
- package/dist/layers/sequelize/model/TransactionEvent/index.js.map +1 -0
- package/dist/layers/sequelize/model/VariableMonitoring/EventData.d.ts +33 -0
- package/dist/layers/sequelize/model/VariableMonitoring/EventData.js +137 -0
- package/dist/layers/sequelize/model/VariableMonitoring/EventData.js.map +1 -0
- package/dist/layers/sequelize/model/VariableMonitoring/VariableMonitoring.d.ts +28 -0
- package/dist/layers/sequelize/model/VariableMonitoring/VariableMonitoring.js +113 -0
- package/dist/layers/sequelize/model/VariableMonitoring/VariableMonitoring.js.map +1 -0
- package/dist/layers/sequelize/model/VariableMonitoring/VariableMonitoringStatus.d.ts +18 -0
- package/dist/layers/sequelize/model/VariableMonitoring/VariableMonitoringStatus.js +71 -0
- package/dist/layers/sequelize/model/VariableMonitoring/VariableMonitoringStatus.js.map +1 -0
- package/dist/layers/sequelize/model/VariableMonitoring/index.d.ts +3 -0
- package/dist/layers/sequelize/model/VariableMonitoring/index.js +7 -0
- package/dist/layers/sequelize/model/VariableMonitoring/index.js.map +1 -0
- package/dist/layers/sequelize/model/index.d.ts +22 -0
- package/dist/layers/sequelize/model/index.js +27 -0
- package/dist/layers/sequelize/model/index.js.map +1 -0
- package/dist/layers/sequelize/repository/AsyncJobStatus.d.ts +24 -0
- package/dist/layers/sequelize/repository/AsyncJobStatus.js +39 -0
- package/dist/layers/sequelize/repository/AsyncJobStatus.js.map +1 -0
- package/dist/layers/sequelize/repository/Authorization.d.ts +18 -0
- package/dist/layers/sequelize/repository/Authorization.js +51 -0
- package/dist/layers/sequelize/repository/Authorization.js.map +1 -0
- package/dist/layers/sequelize/repository/Base.d.ts +28 -0
- package/dist/layers/sequelize/repository/Base.js +135 -0
- package/dist/layers/sequelize/repository/Base.js.map +1 -0
- package/dist/layers/sequelize/repository/BaseJunction.d.ts +33 -0
- package/dist/layers/sequelize/repository/BaseJunction.js +178 -0
- package/dist/layers/sequelize/repository/BaseJunction.js.map +1 -0
- package/dist/layers/sequelize/repository/Boot.d.ts +20 -0
- package/dist/layers/sequelize/repository/Boot.js +78 -0
- package/dist/layers/sequelize/repository/Boot.js.map +1 -0
- package/dist/layers/sequelize/repository/Certificate.d.ts +11 -0
- package/dist/layers/sequelize/repository/Certificate.js +39 -0
- package/dist/layers/sequelize/repository/Certificate.js.map +1 -0
- package/dist/layers/sequelize/repository/ChangeConfiguration.d.ts +10 -0
- package/dist/layers/sequelize/repository/ChangeConfiguration.js +36 -0
- package/dist/layers/sequelize/repository/ChangeConfiguration.js.map +1 -0
- package/dist/layers/sequelize/repository/ChargingProfile.d.ts +25 -0
- package/dist/layers/sequelize/repository/ChargingProfile.js +156 -0
- package/dist/layers/sequelize/repository/ChargingProfile.js.map +1 -0
- package/dist/layers/sequelize/repository/ChargingStationSecurityInfo.d.ts +12 -0
- package/dist/layers/sequelize/repository/ChargingStationSecurityInfo.js +28 -0
- package/dist/layers/sequelize/repository/ChargingStationSecurityInfo.js.map +1 -0
- package/dist/layers/sequelize/repository/ChargingStationSequence.d.ts +21 -0
- package/dist/layers/sequelize/repository/ChargingStationSequence.js +52 -0
- package/dist/layers/sequelize/repository/ChargingStationSequence.js.map +1 -0
- package/dist/layers/sequelize/repository/DeleteCertificateAttempt.d.ts +10 -0
- package/dist/layers/sequelize/repository/DeleteCertificateAttempt.js +13 -0
- package/dist/layers/sequelize/repository/DeleteCertificateAttempt.js.map +1 -0
- package/dist/layers/sequelize/repository/DeviceModel.d.ts +36 -0
- package/dist/layers/sequelize/repository/DeviceModel.js +417 -0
- package/dist/layers/sequelize/repository/DeviceModel.js.map +1 -0
- package/dist/layers/sequelize/repository/InstallCertificateAttempt.d.ts +10 -0
- package/dist/layers/sequelize/repository/InstallCertificateAttempt.js +13 -0
- package/dist/layers/sequelize/repository/InstallCertificateAttempt.js.map +1 -0
- package/dist/layers/sequelize/repository/InstalledCertificate.d.ts +10 -0
- package/dist/layers/sequelize/repository/InstalledCertificate.js +13 -0
- package/dist/layers/sequelize/repository/InstalledCertificate.js.map +1 -0
- package/dist/layers/sequelize/repository/LocalAuthList.d.ts +20 -0
- package/dist/layers/sequelize/repository/LocalAuthList.js +192 -0
- package/dist/layers/sequelize/repository/LocalAuthList.js.map +1 -0
- package/dist/layers/sequelize/repository/Location.d.ts +30 -0
- package/dist/layers/sequelize/repository/Location.js +263 -0
- package/dist/layers/sequelize/repository/Location.js.map +1 -0
- package/dist/layers/sequelize/repository/MessageInfo.d.ts +13 -0
- package/dist/layers/sequelize/repository/MessageInfo.js +55 -0
- package/dist/layers/sequelize/repository/MessageInfo.js.map +1 -0
- package/dist/layers/sequelize/repository/OCPPMessage.d.ts +12 -0
- package/dist/layers/sequelize/repository/OCPPMessage.js +65 -0
- package/dist/layers/sequelize/repository/OCPPMessage.js.map +1 -0
- package/dist/layers/sequelize/repository/RepositoryStore.d.ts +34 -0
- package/dist/layers/sequelize/repository/RepositoryStore.js +79 -0
- package/dist/layers/sequelize/repository/RepositoryStore.js.map +1 -0
- package/dist/layers/sequelize/repository/Reservation.d.ts +15 -0
- package/dist/layers/sequelize/repository/Reservation.js +68 -0
- package/dist/layers/sequelize/repository/Reservation.js.map +1 -0
- package/dist/layers/sequelize/repository/SecurityEvent.d.ts +18 -0
- package/dist/layers/sequelize/repository/SecurityEvent.js +46 -0
- package/dist/layers/sequelize/repository/SecurityEvent.js.map +1 -0
- package/dist/layers/sequelize/repository/ServerNetworkProfile.d.ts +14 -0
- package/dist/layers/sequelize/repository/ServerNetworkProfile.js +40 -0
- package/dist/layers/sequelize/repository/ServerNetworkProfile.js.map +1 -0
- package/dist/layers/sequelize/repository/Subscription.d.ts +20 -0
- package/dist/layers/sequelize/repository/Subscription.js +32 -0
- package/dist/layers/sequelize/repository/Subscription.js.map +1 -0
- package/dist/layers/sequelize/repository/Tariff.d.ts +15 -0
- package/dist/layers/sequelize/repository/Tariff.js +64 -0
- package/dist/layers/sequelize/repository/Tariff.js.map +1 -0
- package/dist/layers/sequelize/repository/Tenant.d.ts +11 -0
- package/dist/layers/sequelize/repository/Tenant.js +21 -0
- package/dist/layers/sequelize/repository/Tenant.js.map +1 -0
- package/dist/layers/sequelize/repository/TransactionEvent.d.ts +46 -0
- package/dist/layers/sequelize/repository/TransactionEvent.js +597 -0
- package/dist/layers/sequelize/repository/TransactionEvent.js.map +1 -0
- package/dist/layers/sequelize/repository/VariableMonitoring.d.ts +20 -0
- package/dist/layers/sequelize/repository/VariableMonitoring.js +168 -0
- package/dist/layers/sequelize/repository/VariableMonitoring.js.map +1 -0
- package/dist/layers/sequelize/util.d.ts +18 -0
- package/dist/layers/sequelize/util.js +143 -0
- package/dist/layers/sequelize/util.js.map +1 -0
- package/dist/util/CryptoUtils.d.ts +6 -0
- package/dist/util/CryptoUtils.js +14 -0
- package/dist/util/CryptoUtils.js.map +1 -0
- package/dist/util/PasswordHashAlgorithm.d.ts +15 -0
- package/dist/util/PasswordHashAlgorithm.js +2 -0
- package/dist/util/PasswordHashAlgorithm.js.map +1 -0
- package/dist/util/Pbkdf2.d.ts +9 -0
- package/dist/util/Pbkdf2.js +20 -0
- package/dist/util/Pbkdf2.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { MessageState } from '@citrineos/base';
|
|
5
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
import { OCPPMessage } from '../model/index.js';
|
|
8
|
+
import { SequelizeRepository } from './Base.js';
|
|
9
|
+
export class SequelizeOCPPMessageRepository extends SequelizeRepository {
|
|
10
|
+
constructor(config, logger, sequelizeInstance) {
|
|
11
|
+
super(config, OCPPMessage.MODEL_NAME, logger, sequelizeInstance);
|
|
12
|
+
}
|
|
13
|
+
async createOCPPMessage(tenantId, message) {
|
|
14
|
+
if (message.correlationId) {
|
|
15
|
+
const correlatedMessages = await this.readAllByQuery(tenantId, {
|
|
16
|
+
where: {
|
|
17
|
+
tenantId,
|
|
18
|
+
correlationId: message.correlationId,
|
|
19
|
+
requestMessageId: null,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
if (correlatedMessages.length > 0) {
|
|
23
|
+
if (correlatedMessages.length > 1) {
|
|
24
|
+
this.logger.warn(`Multiple correlated messages found for correlationId ${message.correlationId} and tenantId ${tenantId}. This should not happen.`);
|
|
25
|
+
}
|
|
26
|
+
const correlatedMessage = correlatedMessages.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())[0]; // Get the oldest message
|
|
27
|
+
// Update the action of the correlated message if it's missing and we have it in the incoming message, or vice versa
|
|
28
|
+
if (correlatedMessage.action === undefined && message.action) {
|
|
29
|
+
correlatedMessage.action = message.action;
|
|
30
|
+
await correlatedMessage.save();
|
|
31
|
+
}
|
|
32
|
+
else if (message.action === undefined && correlatedMessage.action) {
|
|
33
|
+
message.action = correlatedMessage.action;
|
|
34
|
+
}
|
|
35
|
+
if (message.state === MessageState.Request) {
|
|
36
|
+
this.logger.debug(`Saving request message found for correlationId ${message.correlationId} and tenantId ${tenantId}, will update response`);
|
|
37
|
+
const createdMessage = await this.create(tenantId, OCPPMessage.build({ ...message }));
|
|
38
|
+
correlatedMessage.requestMessageId = createdMessage.id;
|
|
39
|
+
await correlatedMessage.save();
|
|
40
|
+
return createdMessage;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.logger.debug(`Saving response message found for correlationId ${message.correlationId} and tenantId ${tenantId} with action ${correlatedMessage.action}`);
|
|
44
|
+
message.requestMessageId = correlatedMessage.id;
|
|
45
|
+
return this.create(tenantId, OCPPMessage.build({ ...message }));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// No correlated message found, ideally because this is the request message arriving before the response
|
|
50
|
+
this.logger.debug(`No correlated message found for correlationId ${message.correlationId} and tenantId ${tenantId} with action ${message.action}. Saving message as-is.`);
|
|
51
|
+
return this.create(tenantId, OCPPMessage.build({ ...message }));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.logger.warn(`No correlationId found for message with tenantId ${tenantId} and action ${message.action}. Saving message as-is without correlation.`);
|
|
56
|
+
return this.create(tenantId, OCPPMessage.build({ ...message }));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async getRequestByCorrelationId(tenantId, correlationId) {
|
|
60
|
+
return this.readOnlyOneByQuery(tenantId, {
|
|
61
|
+
where: { tenantId, correlationId, requestMessageId: null },
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=OCPPMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OCPPMessage.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/OCPPMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IAuthorizationRepository, IBootRepository, ICertificateRepository, IChangeConfigurationRepository, IChargingProfileRepository, IChargingStationSequenceRepository, IDeleteCertificateAttemptRepository, IDeviceModelRepository, IInstallCertificateAttemptRepository, IInstalledCertificateRepository, ILocalAuthListRepository, ILocationRepository, IMessageInfoRepository, IOCPPMessageRepository, IReservationRepository, ISecurityEventRepository, IServerNetworkProfileRepository, ISubscriptionRepository, ITariffRepository, ITenantRepository, ITransactionEventRepository, IVariableMonitoringRepository } from '../../../interfaces/index.js';
|
|
2
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
3
|
+
import { CrudRepository } from '@citrineos/base';
|
|
4
|
+
import type { ILogObj } from 'tslog';
|
|
5
|
+
import { Logger } from 'tslog';
|
|
6
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
7
|
+
import { Component } from '../model/index.js';
|
|
8
|
+
export declare class RepositoryStore {
|
|
9
|
+
sequelizeInstance: Sequelize;
|
|
10
|
+
authorizationRepository: IAuthorizationRepository;
|
|
11
|
+
bootRepository: IBootRepository;
|
|
12
|
+
certificateRepository: ICertificateRepository;
|
|
13
|
+
installedCertificateRepository: IInstalledCertificateRepository;
|
|
14
|
+
installCertificateAttemptRepository: IInstallCertificateAttemptRepository;
|
|
15
|
+
deleteCertificateAttemptRepository: IDeleteCertificateAttemptRepository;
|
|
16
|
+
changeConfigurationRepository: IChangeConfigurationRepository;
|
|
17
|
+
chargingProfileRepository: IChargingProfileRepository;
|
|
18
|
+
chargingStationSequenceRepository: IChargingStationSequenceRepository;
|
|
19
|
+
componentRepository: CrudRepository<Component>;
|
|
20
|
+
deviceModelRepository: IDeviceModelRepository;
|
|
21
|
+
localAuthListRepository: ILocalAuthListRepository;
|
|
22
|
+
locationRepository: ILocationRepository;
|
|
23
|
+
messageInfoRepository: IMessageInfoRepository;
|
|
24
|
+
ocppMessageRepository: IOCPPMessageRepository;
|
|
25
|
+
reservationRepository: IReservationRepository;
|
|
26
|
+
securityEventRepository: ISecurityEventRepository;
|
|
27
|
+
subscriptionRepository: ISubscriptionRepository;
|
|
28
|
+
tariffRepository: ITariffRepository;
|
|
29
|
+
transactionEventRepository: ITransactionEventRepository;
|
|
30
|
+
variableMonitoringRepository: IVariableMonitoringRepository;
|
|
31
|
+
tenantRepository: ITenantRepository;
|
|
32
|
+
serverNetworkProfileRepository: IServerNetworkProfileRepository;
|
|
33
|
+
constructor(config: BootstrapConfig, logger: Logger<ILogObj>, sequelizeInstance: Sequelize);
|
|
34
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CrudRepository } from '@citrineos/base';
|
|
2
|
+
import { Logger } from 'tslog';
|
|
3
|
+
import { SequelizeAuthorizationRepository } from './Authorization.js';
|
|
4
|
+
import { SequelizeBootRepository } from './Boot.js';
|
|
5
|
+
import { SequelizeCertificateRepository } from './Certificate.js';
|
|
6
|
+
import { SequelizeDeviceModelRepository } from './DeviceModel.js';
|
|
7
|
+
import { SequelizeLocationRepository } from './Location.js';
|
|
8
|
+
import { SequelizeMessageInfoRepository } from './MessageInfo.js';
|
|
9
|
+
import { SequelizeSecurityEventRepository } from './SecurityEvent.js';
|
|
10
|
+
import { SequelizeSubscriptionRepository } from './Subscription.js';
|
|
11
|
+
import { SequelizeTariffRepository } from './Tariff.js';
|
|
12
|
+
import { SequelizeTransactionEventRepository } from './TransactionEvent.js';
|
|
13
|
+
import { SequelizeVariableMonitoringRepository } from './VariableMonitoring.js';
|
|
14
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
15
|
+
import { Component, TransactionEvent } from '../model/index.js';
|
|
16
|
+
import { SequelizeRepository } from './Base.js';
|
|
17
|
+
import { SequelizeReservationRepository } from './Reservation.js';
|
|
18
|
+
import { SequelizeLocalAuthListRepository } from './LocalAuthList.js';
|
|
19
|
+
import { SequelizeChargingStationSequenceRepository } from './ChargingStationSequence.js';
|
|
20
|
+
import { SequelizeChargingProfileRepository } from './ChargingProfile.js';
|
|
21
|
+
import { SequelizeChangeConfigurationRepository } from './ChangeConfiguration.js';
|
|
22
|
+
import { SequelizeOCPPMessageRepository, SequelizeTenantRepository } from '../index.js';
|
|
23
|
+
import { SequelizeServerNetworkProfileRepository } from './ServerNetworkProfile.js';
|
|
24
|
+
import { SequelizeInstalledCertificateRepository } from './InstalledCertificate.js';
|
|
25
|
+
import { SequelizeInstallCertificateAttemptRepository } from './InstallCertificateAttempt.js';
|
|
26
|
+
import { SequelizeDeleteCertificateAttemptRepository } from './DeleteCertificateAttempt.js';
|
|
27
|
+
export class RepositoryStore {
|
|
28
|
+
sequelizeInstance;
|
|
29
|
+
authorizationRepository;
|
|
30
|
+
bootRepository;
|
|
31
|
+
certificateRepository;
|
|
32
|
+
installedCertificateRepository;
|
|
33
|
+
installCertificateAttemptRepository;
|
|
34
|
+
deleteCertificateAttemptRepository;
|
|
35
|
+
changeConfigurationRepository;
|
|
36
|
+
chargingProfileRepository;
|
|
37
|
+
chargingStationSequenceRepository;
|
|
38
|
+
componentRepository;
|
|
39
|
+
deviceModelRepository;
|
|
40
|
+
localAuthListRepository;
|
|
41
|
+
locationRepository;
|
|
42
|
+
messageInfoRepository;
|
|
43
|
+
ocppMessageRepository;
|
|
44
|
+
reservationRepository;
|
|
45
|
+
securityEventRepository;
|
|
46
|
+
subscriptionRepository;
|
|
47
|
+
tariffRepository;
|
|
48
|
+
transactionEventRepository;
|
|
49
|
+
variableMonitoringRepository;
|
|
50
|
+
tenantRepository;
|
|
51
|
+
serverNetworkProfileRepository;
|
|
52
|
+
constructor(config, logger, sequelizeInstance) {
|
|
53
|
+
this.sequelizeInstance = sequelizeInstance;
|
|
54
|
+
this.authorizationRepository = new SequelizeAuthorizationRepository(config, logger, sequelizeInstance);
|
|
55
|
+
this.bootRepository = new SequelizeBootRepository(config, logger, sequelizeInstance);
|
|
56
|
+
this.certificateRepository = new SequelizeCertificateRepository(config, logger, sequelizeInstance);
|
|
57
|
+
this.installedCertificateRepository = new SequelizeInstalledCertificateRepository(config, logger, sequelizeInstance);
|
|
58
|
+
this.installCertificateAttemptRepository = new SequelizeInstallCertificateAttemptRepository(config, logger, sequelizeInstance);
|
|
59
|
+
this.deleteCertificateAttemptRepository = new SequelizeDeleteCertificateAttemptRepository(config, logger, sequelizeInstance);
|
|
60
|
+
this.changeConfigurationRepository = new SequelizeChangeConfigurationRepository(config, logger, sequelizeInstance);
|
|
61
|
+
this.chargingProfileRepository = new SequelizeChargingProfileRepository(config, logger, sequelizeInstance);
|
|
62
|
+
this.chargingStationSequenceRepository = new SequelizeChargingStationSequenceRepository(config, logger, sequelizeInstance);
|
|
63
|
+
this.componentRepository = new SequelizeRepository(config, Component.MODEL_NAME, logger);
|
|
64
|
+
this.deviceModelRepository = new SequelizeDeviceModelRepository(config, logger, sequelizeInstance);
|
|
65
|
+
this.localAuthListRepository = new SequelizeLocalAuthListRepository(config, logger, sequelizeInstance);
|
|
66
|
+
this.locationRepository = new SequelizeLocationRepository(config, logger, sequelizeInstance);
|
|
67
|
+
this.messageInfoRepository = new SequelizeMessageInfoRepository(config, logger, sequelizeInstance);
|
|
68
|
+
this.ocppMessageRepository = new SequelizeOCPPMessageRepository(config, logger, sequelizeInstance);
|
|
69
|
+
this.reservationRepository = new SequelizeReservationRepository(config, logger, sequelizeInstance);
|
|
70
|
+
this.securityEventRepository = new SequelizeSecurityEventRepository(config, logger, sequelizeInstance);
|
|
71
|
+
this.subscriptionRepository = new SequelizeSubscriptionRepository(config, logger, sequelizeInstance);
|
|
72
|
+
this.tariffRepository = new SequelizeTariffRepository(config, logger, sequelizeInstance);
|
|
73
|
+
this.transactionEventRepository = new SequelizeTransactionEventRepository(config, logger, TransactionEvent.MODEL_NAME, sequelizeInstance);
|
|
74
|
+
this.variableMonitoringRepository = new SequelizeVariableMonitoringRepository(config, logger, sequelizeInstance);
|
|
75
|
+
this.tenantRepository = new SequelizeTenantRepository(config, logger, sequelizeInstance);
|
|
76
|
+
this.serverNetworkProfileRepository = new SequelizeServerNetworkProfileRepository(config, logger, sequelizeInstance);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=RepositoryStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepositoryStore.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/RepositoryStore.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,0CAA0C,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,sCAAsC,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,uCAAuC,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,uCAAuC,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,4CAA4C,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AAE5F,MAAM,OAAO,eAAe;IAC1B,iBAAiB,CAAY;IAC7B,uBAAuB,CAA2B;IAClD,cAAc,CAAkB;IAChC,qBAAqB,CAAyB;IAC9C,8BAA8B,CAAkC;IAChE,mCAAmC,CAAuC;IAC1E,kCAAkC,CAAsC;IACxE,6BAA6B,CAAiC;IAC9D,yBAAyB,CAA6B;IACtD,iCAAiC,CAAqC;IACtE,mBAAmB,CAA4B;IAC/C,qBAAqB,CAAyB;IAC9C,uBAAuB,CAA2B;IAClD,kBAAkB,CAAsB;IACxC,qBAAqB,CAAyB;IAC9C,qBAAqB,CAAyB;IAC9C,qBAAqB,CAAyB;IAC9C,uBAAuB,CAA2B;IAClD,sBAAsB,CAA0B;IAChD,gBAAgB,CAAoB;IACpC,0BAA0B,CAA8B;IACxD,4BAA4B,CAAgC;IAC5D,gBAAgB,CAAoB;IACpC,8BAA8B,CAAkC;IAEhE,YAAY,MAAuB,EAAE,MAAuB,EAAE,iBAA4B;QACxF,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,uBAAuB,GAAG,IAAI,gCAAgC,CACjE,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACrF,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAA8B,CAC7D,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,8BAA8B,GAAG,IAAI,uCAAuC,CAC/E,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,mCAAmC,GAAG,IAAI,4CAA4C,CACzF,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,kCAAkC,GAAG,IAAI,2CAA2C,CACvF,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,6BAA6B,GAAG,IAAI,sCAAsC,CAC7E,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,yBAAyB,GAAG,IAAI,kCAAkC,CACrE,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,iCAAiC,GAAG,IAAI,0CAA0C,CACrF,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAChD,MAAM,EACN,SAAS,CAAC,UAAU,EACpB,MAAM,CACP,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAA8B,CAC7D,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,uBAAuB,GAAG,IAAI,gCAAgC,CACjE,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC7F,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAA8B,CAC7D,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAA8B,CAC7D,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAA8B,CAC7D,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,uBAAuB,GAAG,IAAI,gCAAgC,CACjE,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,sBAAsB,GAAG,IAAI,+BAA+B,CAC/D,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACzF,IAAI,CAAC,0BAA0B,GAAG,IAAI,mCAAmC,CACvE,MAAM,EACN,MAAM,EACN,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,4BAA4B,GAAG,IAAI,qCAAqC,CAC3E,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACzF,IAAI,CAAC,8BAA8B,GAAG,IAAI,uCAAuC,CAC/E,MAAM,EACN,MAAM,EACN,iBAAiB,CAClB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
2
|
+
import { CrudRepository, OCPP2_0_1 } from '@citrineos/base';
|
|
3
|
+
import type { IReservationRepository } from '../../../interfaces/index.js';
|
|
4
|
+
import { SequelizeRepository } from './Base.js';
|
|
5
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
6
|
+
import type { ILogObj } from 'tslog';
|
|
7
|
+
import { Logger } from 'tslog';
|
|
8
|
+
import { EvseType, Reservation } from '../model/index.js';
|
|
9
|
+
export declare class SequelizeReservationRepository extends SequelizeRepository<Reservation> implements IReservationRepository {
|
|
10
|
+
evse: CrudRepository<EvseType>;
|
|
11
|
+
logger: Logger<ILogObj>;
|
|
12
|
+
constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize, evse?: CrudRepository<EvseType>);
|
|
13
|
+
createOrUpdateReservation(tenantId: number, reserveNowRequest: OCPP2_0_1.ReserveNowRequest, stationId: string, isActive?: boolean): Promise<Reservation | undefined>;
|
|
14
|
+
getNextReservationId(tenantId: number, stationId: string): Promise<number>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { CrudRepository, OCPP2_0_1 } from '@citrineos/base';
|
|
2
|
+
import { SequelizeRepository } from './Base.js';
|
|
3
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
4
|
+
import { Logger } from 'tslog';
|
|
5
|
+
import { EvseType, Reservation } from '../model/index.js';
|
|
6
|
+
export class SequelizeReservationRepository extends SequelizeRepository {
|
|
7
|
+
evse;
|
|
8
|
+
logger;
|
|
9
|
+
constructor(config, logger, sequelizeInstance, evse) {
|
|
10
|
+
super(config, Reservation.MODEL_NAME, logger, sequelizeInstance);
|
|
11
|
+
this.evse = evse
|
|
12
|
+
? evse
|
|
13
|
+
: new SequelizeRepository(config, EvseType.MODEL_NAME, logger, sequelizeInstance);
|
|
14
|
+
this.logger = logger
|
|
15
|
+
? logger.getSubLogger({ name: this.constructor.name })
|
|
16
|
+
: new Logger({ name: this.constructor.name });
|
|
17
|
+
}
|
|
18
|
+
async createOrUpdateReservation(tenantId, reserveNowRequest, stationId, isActive) {
|
|
19
|
+
let evseDBId = null;
|
|
20
|
+
if (reserveNowRequest.evseId) {
|
|
21
|
+
const [evse] = await this.evse.readAllByQuery(tenantId, {
|
|
22
|
+
where: {
|
|
23
|
+
id: reserveNowRequest.evseId,
|
|
24
|
+
connectorId: null,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
if (!evse) {
|
|
28
|
+
this.logger.error(`Could not find evse with id ${reserveNowRequest.evseId}`);
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
evseDBId = evse.databaseId;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const [storedReservation, created] = await this.readOrCreateByQuery(tenantId, {
|
|
36
|
+
where: {
|
|
37
|
+
tenantId,
|
|
38
|
+
// unique constraints
|
|
39
|
+
stationId,
|
|
40
|
+
id: reserveNowRequest.id,
|
|
41
|
+
},
|
|
42
|
+
defaults: {
|
|
43
|
+
expiryDateTime: reserveNowRequest.expiryDateTime,
|
|
44
|
+
connectorType: reserveNowRequest.connectorType,
|
|
45
|
+
evseId: evseDBId,
|
|
46
|
+
idToken: reserveNowRequest.idToken,
|
|
47
|
+
groupIdToken: reserveNowRequest.groupIdToken ? reserveNowRequest.groupIdToken : null,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
if (!created) {
|
|
51
|
+
return await this.updateByKey(tenantId, {
|
|
52
|
+
expiryDateTime: reserveNowRequest.expiryDateTime,
|
|
53
|
+
connectorType: reserveNowRequest.connectorType ?? null,
|
|
54
|
+
evseId: evseDBId,
|
|
55
|
+
idToken: reserveNowRequest.idToken,
|
|
56
|
+
groupIdToken: reserveNowRequest.groupIdToken ?? null,
|
|
57
|
+
isActive,
|
|
58
|
+
}, storedReservation.databaseId.toString());
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return storedReservation;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async getNextReservationId(tenantId, stationId) {
|
|
65
|
+
return await this.readNextValue(tenantId, 'id', { where: { stationId } });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=Reservation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reservation.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/Reservation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
2
|
+
import { OCPP2_0_1 } from '@citrineos/base';
|
|
3
|
+
import { SecurityEvent } from '../model/index.js';
|
|
4
|
+
import { SequelizeRepository } from './Base.js';
|
|
5
|
+
import type { ISecurityEventRepository } from '../../../interfaces/index.js';
|
|
6
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
7
|
+
import type { ILogObj } from 'tslog';
|
|
8
|
+
import { Logger } from 'tslog';
|
|
9
|
+
export declare class SequelizeSecurityEventRepository extends SequelizeRepository<SecurityEvent> implements ISecurityEventRepository {
|
|
10
|
+
constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize);
|
|
11
|
+
createByStationId(tenantId: number, value: OCPP2_0_1.SecurityEventNotificationRequest, stationId: string): Promise<SecurityEvent>;
|
|
12
|
+
readByStationIdAndTimestamps(tenantId: number, stationId: string, from?: Date, to?: Date): Promise<SecurityEvent[]>;
|
|
13
|
+
deleteByKey(tenantId: number, key: string): Promise<SecurityEvent | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* Private Methods
|
|
16
|
+
*/
|
|
17
|
+
private generateTimestampQuery;
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { OCPP2_0_1 } from '@citrineos/base';
|
|
2
|
+
import { SecurityEvent } from '../model/index.js';
|
|
3
|
+
import { SequelizeRepository } from './Base.js';
|
|
4
|
+
import { Op } from 'sequelize';
|
|
5
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
export class SequelizeSecurityEventRepository extends SequelizeRepository {
|
|
8
|
+
constructor(config, logger, sequelizeInstance) {
|
|
9
|
+
super(config, SecurityEvent.MODEL_NAME, logger, sequelizeInstance);
|
|
10
|
+
}
|
|
11
|
+
async createByStationId(tenantId, value, stationId) {
|
|
12
|
+
return await this.create(tenantId, SecurityEvent.build({
|
|
13
|
+
tenantId,
|
|
14
|
+
stationId,
|
|
15
|
+
...value,
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
async readByStationIdAndTimestamps(tenantId, stationId, from, to) {
|
|
19
|
+
const timestampQuery = this.generateTimestampQuery(from?.toISOString(), to?.toISOString());
|
|
20
|
+
return await this.readAllByQuery(tenantId, {
|
|
21
|
+
where: {
|
|
22
|
+
stationId,
|
|
23
|
+
...timestampQuery,
|
|
24
|
+
},
|
|
25
|
+
}).then((row) => row);
|
|
26
|
+
}
|
|
27
|
+
async deleteByKey(tenantId, key) {
|
|
28
|
+
return await super.deleteByKey(tenantId, key);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Private Methods
|
|
32
|
+
*/
|
|
33
|
+
generateTimestampQuery(from, to) {
|
|
34
|
+
if (!from && !to) {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
if (!from && to) {
|
|
38
|
+
return { timestamp: { [Op.lte]: to } };
|
|
39
|
+
}
|
|
40
|
+
if (from && !to) {
|
|
41
|
+
return { timestamp: { [Op.gte]: from } };
|
|
42
|
+
}
|
|
43
|
+
return { timestamp: { [Op.between]: [from, to] } };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=SecurityEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityEvent.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/SecurityEvent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,OAAO,gCACX,SAAQ,mBAAkC;IAG1C,YAAY,MAAuB,EAAE,MAAwB,EAAE,iBAA6B;QAC1F,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,KAAiD,EACjD,SAAiB;QAEjB,OAAO,MAAM,IAAI,CAAC,MAAM,CACtB,QAAQ,EACR,aAAa,CAAC,KAAK,CAAC;YAClB,QAAQ;YACR,SAAS;YACT,GAAG,KAAK;SACT,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,QAAgB,EAChB,SAAiB,EACjB,IAAW,EACX,EAAS;QAET,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3F,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzC,KAAK,EAAE;gBACL,SAAS;gBACT,GAAG,cAAc;aAClB;SACF,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAsB,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,GAAW;QAC7C,OAAO,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,IAAa,EAAE,EAAW;QACvD,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
2
|
+
import { SequelizeRepository } from './Base.js';
|
|
3
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
4
|
+
import type { ILogObj } from 'tslog';
|
|
5
|
+
import { Logger } from 'tslog';
|
|
6
|
+
import { ServerNetworkProfile } from '../model/index.js';
|
|
7
|
+
import type { IServerNetworkProfileRepository } from '../../../interfaces/index.js';
|
|
8
|
+
export declare class SequelizeServerNetworkProfileRepository extends SequelizeRepository<ServerNetworkProfile> implements IServerNetworkProfileRepository {
|
|
9
|
+
constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize);
|
|
10
|
+
/**
|
|
11
|
+
* Finds or creates a ServerNetworkProfile by id, updates its fields, saves, and returns the instance.
|
|
12
|
+
*/
|
|
13
|
+
upsertServerNetworkProfile(websocketServerConfig: any, maxCallLengthSeconds: number): Promise<ServerNetworkProfile>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { SequelizeRepository } from './Base.js';
|
|
5
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
import { ServerNetworkProfile } from '../model/index.js';
|
|
8
|
+
export class SequelizeServerNetworkProfileRepository extends SequelizeRepository {
|
|
9
|
+
constructor(config, logger, sequelizeInstance) {
|
|
10
|
+
super(config, ServerNetworkProfile.MODEL_NAME, logger, sequelizeInstance);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Finds or creates a ServerNetworkProfile by id, updates its fields, saves, and returns the instance.
|
|
14
|
+
*/
|
|
15
|
+
async upsertServerNetworkProfile(websocketServerConfig, maxCallLengthSeconds) {
|
|
16
|
+
const [serverNetworkProfile] = await ServerNetworkProfile.findOrBuild({
|
|
17
|
+
where: { id: websocketServerConfig.id },
|
|
18
|
+
});
|
|
19
|
+
serverNetworkProfile.host = websocketServerConfig.host;
|
|
20
|
+
serverNetworkProfile.port = websocketServerConfig.port;
|
|
21
|
+
serverNetworkProfile.pingInterval = websocketServerConfig.pingInterval;
|
|
22
|
+
serverNetworkProfile.protocol = websocketServerConfig.protocol;
|
|
23
|
+
serverNetworkProfile.messageTimeout = maxCallLengthSeconds;
|
|
24
|
+
serverNetworkProfile.securityProfile = websocketServerConfig.securityProfile;
|
|
25
|
+
serverNetworkProfile.allowUnknownChargingStations =
|
|
26
|
+
websocketServerConfig.allowUnknownChargingStations;
|
|
27
|
+
serverNetworkProfile.tlsKeyFilePath = websocketServerConfig.tlsKeyFilePath;
|
|
28
|
+
serverNetworkProfile.tlsCertificateChainFilePath =
|
|
29
|
+
websocketServerConfig.tlsCertificateChainFilePath;
|
|
30
|
+
serverNetworkProfile.mtlsCertificateAuthorityKeyFilePath =
|
|
31
|
+
websocketServerConfig.mtlsCertificateAuthorityKeyFilePath;
|
|
32
|
+
serverNetworkProfile.rootCACertificateFilePath =
|
|
33
|
+
websocketServerConfig.rootCACertificateFilePath;
|
|
34
|
+
serverNetworkProfile.tenantId = websocketServerConfig.tenantId;
|
|
35
|
+
serverNetworkProfile.tenantPathMapping = websocketServerConfig.tenantPathMapping;
|
|
36
|
+
await serverNetworkProfile.save();
|
|
37
|
+
return serverNetworkProfile;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ServerNetworkProfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerNetworkProfile.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/ServerNetworkProfile.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,sCAAsC;AAGtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,OAAO,uCACX,SAAQ,mBAAyC;IAGjD,YAAY,MAAuB,EAAE,MAAwB,EAAE,iBAA6B;QAC1F,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,0BAA0B,CAC9B,qBAA0B,EAC1B,oBAA4B;QAE5B,MAAM,CAAC,oBAAoB,CAAC,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC;YACpE,KAAK,EAAE,EAAE,EAAE,EAAE,qBAAqB,CAAC,EAAE,EAAE;SACxC,CAAC,CAAC;QACH,oBAAoB,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;QACvD,oBAAoB,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;QACvD,oBAAoB,CAAC,YAAY,GAAG,qBAAqB,CAAC,YAAY,CAAC;QACvE,oBAAoB,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QAC/D,oBAAoB,CAAC,cAAc,GAAG,oBAAoB,CAAC;QAC3D,oBAAoB,CAAC,eAAe,GAAG,qBAAqB,CAAC,eAAe,CAAC;QAC7E,oBAAoB,CAAC,4BAA4B;YAC/C,qBAAqB,CAAC,4BAA4B,CAAC;QACrD,oBAAoB,CAAC,cAAc,GAAG,qBAAqB,CAAC,cAAc,CAAC;QAC3E,oBAAoB,CAAC,2BAA2B;YAC9C,qBAAqB,CAAC,2BAA2B,CAAC;QACpD,oBAAoB,CAAC,mCAAmC;YACtD,qBAAqB,CAAC,mCAAmC,CAAC;QAC5D,oBAAoB,CAAC,yBAAyB;YAC5C,qBAAqB,CAAC,yBAAyB,CAAC;QAClD,oBAAoB,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QAC/D,oBAAoB,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;QACjF,MAAM,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
2
|
+
import { SequelizeRepository, Subscription } from '../index.js';
|
|
3
|
+
import type { ISubscriptionRepository } from '../../../index.js';
|
|
4
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
5
|
+
import type { ILogObj } from 'tslog';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
export declare class SequelizeSubscriptionRepository extends SequelizeRepository<Subscription> implements ISubscriptionRepository {
|
|
8
|
+
constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize);
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new {@link Subscription} in the database.
|
|
11
|
+
* Input is assumed to not have an id, and id will be removed if present.
|
|
12
|
+
* Object is rebuilt to ensure access to essential {@link Model} function {@link Model.save()} (Model is extended by Subscription).
|
|
13
|
+
*
|
|
14
|
+
* @param value {@link Subscription} object which may have been deserialized from JSON
|
|
15
|
+
* @returns Saved {@link Subscription} if successful, undefined otherwise
|
|
16
|
+
*/
|
|
17
|
+
create(tenantId: number, value: Subscription): Promise<Subscription>;
|
|
18
|
+
readAllByStationId(tenantId: number, stationId: string): Promise<Subscription[]>;
|
|
19
|
+
deleteByKey(tenantId: number, key: string): Promise<Subscription | undefined>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
5
|
+
import { SequelizeRepository, Subscription } from '../index.js';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
export class SequelizeSubscriptionRepository extends SequelizeRepository {
|
|
8
|
+
constructor(config, logger, sequelizeInstance) {
|
|
9
|
+
super(config, Subscription.MODEL_NAME, logger, sequelizeInstance);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new {@link Subscription} in the database.
|
|
13
|
+
* Input is assumed to not have an id, and id will be removed if present.
|
|
14
|
+
* Object is rebuilt to ensure access to essential {@link Model} function {@link Model.save()} (Model is extended by Subscription).
|
|
15
|
+
*
|
|
16
|
+
* @param value {@link Subscription} object which may have been deserialized from JSON
|
|
17
|
+
* @returns Saved {@link Subscription} if successful, undefined otherwise
|
|
18
|
+
*/
|
|
19
|
+
create(tenantId, value) {
|
|
20
|
+
const { ...rawSubscription } = value;
|
|
21
|
+
rawSubscription.tenantId = tenantId;
|
|
22
|
+
rawSubscription.id = null;
|
|
23
|
+
return super.create(tenantId, Subscription.build({ ...rawSubscription }));
|
|
24
|
+
}
|
|
25
|
+
readAllByStationId(tenantId, stationId) {
|
|
26
|
+
return super.readAllByQuery(tenantId, { where: { stationId: stationId } });
|
|
27
|
+
}
|
|
28
|
+
deleteByKey(tenantId, key) {
|
|
29
|
+
return super.deleteByKey(tenantId, key);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=Subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Subscription.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/Subscription.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,OAAO,+BACX,SAAQ,mBAAiC;IAGzC,YAAY,MAAuB,EAAE,MAAwB,EAAE,iBAA6B;QAC1F,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,QAAgB,EAAE,KAAmB;QAC1C,MAAM,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC;QACrC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC;QAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,kBAAkB,CAAC,QAAgB,EAAE,SAAiB;QACpD,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,GAAW;QACvC,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SequelizeRepository } from './Base.js';
|
|
2
|
+
import type { ITariffRepository, TariffQueryString } from '../../../interfaces/index.js';
|
|
3
|
+
import { Tariff } from '../model/index.js';
|
|
4
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
5
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
6
|
+
import type { ILogObj } from 'tslog';
|
|
7
|
+
import { Logger } from 'tslog';
|
|
8
|
+
export declare class SequelizeTariffRepository extends SequelizeRepository<Tariff> implements ITariffRepository {
|
|
9
|
+
constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize);
|
|
10
|
+
findByStationIds(tenantId: number, stationIds: string[]): Promise<Tariff[] | undefined>;
|
|
11
|
+
findByStationId(tenantId: number, stationId: string): Promise<Tariff | undefined>;
|
|
12
|
+
upsertTariff(tenantId: number, tariff: Tariff): Promise<Tariff>;
|
|
13
|
+
readAllByQuerystring(tenantId: number, query: TariffQueryString): Promise<Tariff[]>;
|
|
14
|
+
deleteAllByQuerystring(tenantId: number, query: TariffQueryString): Promise<Tariff[]>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { SequelizeRepository } from './Base.js';
|
|
5
|
+
import { Tariff } from '../model/index.js';
|
|
6
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
7
|
+
import { Logger } from 'tslog';
|
|
8
|
+
import { Op } from 'sequelize';
|
|
9
|
+
export class SequelizeTariffRepository extends SequelizeRepository {
|
|
10
|
+
constructor(config, logger, sequelizeInstance) {
|
|
11
|
+
super(config, Tariff.MODEL_NAME, logger, sequelizeInstance);
|
|
12
|
+
}
|
|
13
|
+
async findByStationIds(tenantId, stationIds) {
|
|
14
|
+
return super.readAllByQuery(tenantId, {
|
|
15
|
+
where: {
|
|
16
|
+
stationId: {
|
|
17
|
+
[Op.in]: stationIds,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async findByStationId(tenantId, stationId) {
|
|
23
|
+
return super.readOnlyOneByQuery(tenantId, {
|
|
24
|
+
where: {
|
|
25
|
+
stationId: stationId,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async upsertTariff(tenantId, tariff) {
|
|
30
|
+
tariff.tenantId = tenantId;
|
|
31
|
+
return await this.s.transaction(async (transaction) => {
|
|
32
|
+
const savedTariff = await this.readOnlyOneByQuery(tenantId, {
|
|
33
|
+
where: { id: tariff.id },
|
|
34
|
+
transaction,
|
|
35
|
+
});
|
|
36
|
+
if (savedTariff) {
|
|
37
|
+
const updatedTariff = await savedTariff.set(tariff.data).save({ transaction });
|
|
38
|
+
this.emit('updated', [updatedTariff]);
|
|
39
|
+
return updatedTariff;
|
|
40
|
+
}
|
|
41
|
+
const createdTariff = await tariff.save({ transaction });
|
|
42
|
+
this.emit('created', [createdTariff]);
|
|
43
|
+
return createdTariff;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async readAllByQuerystring(tenantId, query) {
|
|
47
|
+
return super.readAllByQuery(tenantId, {
|
|
48
|
+
where: {
|
|
49
|
+
...(query.id && { id: query.id }),
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async deleteAllByQuerystring(tenantId, query) {
|
|
54
|
+
if (!query.id) {
|
|
55
|
+
throw new Error('Must specify at least one query parameter');
|
|
56
|
+
}
|
|
57
|
+
return super.deleteAllByQuery(tenantId, {
|
|
58
|
+
where: {
|
|
59
|
+
...(query.id && { id: query.id }),
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=Tariff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tariff.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/Tariff.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,MAAM,OAAO,yBACX,SAAQ,mBAA2B;IAGnC,YAAY,MAAuB,EAAE,MAAwB,EAAE,iBAA6B;QAC1F,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,UAAoB;QAC3D,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;YACpC,KAAK,EAAE;gBACL,SAAS,EAAE;oBACT,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;iBACpB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,SAAiB;QACvD,OAAO,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YACxC,KAAK,EAAE;gBACL,SAAS,EAAE,SAAS;aACrB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,MAAc;QACjD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;YACpD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;gBAC1D,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACxB,WAAW;aACZ,CAAC,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC/E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;gBACtC,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;YACtC,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAAE,KAAwB;QACnE,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;YACpC,KAAK,EAAE;gBACL,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,KAAwB;QACrE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACtC,KAAK,EAAE;gBACL,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;aAClC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SequelizeRepository } from './Base.js';
|
|
2
|
+
import type { ITenantRepository } from '../../../interfaces/index.js';
|
|
3
|
+
import type { BootstrapConfig } from '@citrineos/base';
|
|
4
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
5
|
+
import type { ILogObj } from 'tslog';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
import { Tenant } from '../model/Tenant.js';
|
|
8
|
+
export declare class SequelizeTenantRepository extends SequelizeRepository<Tenant> implements ITenantRepository {
|
|
9
|
+
constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize);
|
|
10
|
+
createTenant(tenant: Tenant): Promise<Tenant>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { SequelizeRepository } from './Base.js';
|
|
5
|
+
import { Sequelize } from 'sequelize-typescript';
|
|
6
|
+
import { Logger } from 'tslog';
|
|
7
|
+
import { Tenant } from '../model/Tenant.js';
|
|
8
|
+
export class SequelizeTenantRepository extends SequelizeRepository {
|
|
9
|
+
constructor(config, logger, sequelizeInstance) {
|
|
10
|
+
super(config, Tenant.MODEL_NAME, logger, sequelizeInstance);
|
|
11
|
+
}
|
|
12
|
+
async createTenant(tenant) {
|
|
13
|
+
const newTenant = Tenant.build({
|
|
14
|
+
name: tenant.name,
|
|
15
|
+
isUserTenant: tenant.isUserTenant,
|
|
16
|
+
url: tenant.url,
|
|
17
|
+
}); // bypass TS for tenant creation attributes
|
|
18
|
+
return await newTenant.save();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Tenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tenant.js","sourceRoot":"","sources":["../../../../src/layers/sequelize/repository/Tenant.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,yBACX,SAAQ,mBAA2B;IAGnC,YAAY,MAAuB,EAAE,MAAwB,EAAE,iBAA6B;QAC1F,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,GAAG,EAAE,MAAM,CAAC,GAAG;SACT,CAAC,CAAC,CAAC,2CAA2C;QACtD,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
|