Files
cariflex/tools/citrineos-core-main/apps/Server/migrations/20251111160000-remove-enums.ts
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

158 lines
4.7 KiB
TypeScript

// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
//
// SPDX-License-Identifier: Apache-2.0
'use strict';
/** @type {import('sequelize-cli').Migration} */
import { DataTypes, QueryInterface } from 'sequelize';
export default {
up: async (queryInterface: QueryInterface) => {
await queryInterface.changeColumn('InstalledCertificates', 'certificateType', {
type: DataTypes.STRING,
allowNull: false,
});
await queryInterface.sequelize.query(`
DROP TYPE "enum_InstalledCertificates_certificateType";
`);
await queryInterface.changeColumn('Connectors', 'status', {
type: DataTypes.STRING,
});
await queryInterface.sequelize.query(`
DROP TYPE "enum_Connectors_status";
`);
// Default value references enum type, since default value is changed before column type, so we had to change the column to STRING first.
await queryInterface.changeColumn('Connectors', 'status', {
type: DataTypes.STRING,
defaultValue: 'Unknown',
});
await queryInterface.changeColumn('Connectors', 'errorCode', {
type: DataTypes.STRING,
});
await queryInterface.sequelize.query(`
DROP TYPE "enum_Connectors_errorCode";
`);
// Default value references enum type, since default value is changed before column type, so we had to change the column to STRING first.
await queryInterface.changeColumn('Connectors', 'errorCode', {
type: DataTypes.STRING,
defaultValue: 'NoError',
});
},
down: async (queryInterface: QueryInterface) => {
await queryInterface.sequelize.query(`
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_type WHERE typname = 'enum_InstalledCertificates_certificateType'
) THEN
CREATE TYPE "enum_InstalledCertificates_certificateType" AS ENUM (
'V2GRootCertificate',
'MORootCertificate',
'CSMSRootCertificate',
'V2GCertificateChain',
'ManufacturerRootCertificate'
);
END IF;
END$$;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_type WHERE typname = 'enum_Connectors_status'
) THEN
CREATE TYPE "enum_Connectors_status" AS ENUM (
'Available',
'Preparing',
'Charging',
'SuspendedEVSE',
'SuspendedEV',
'Finishing',
'Reserved',
'Unavailable',
'Faulted'
);
END IF;
END$$;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_type WHERE typname = 'enum_Connectors_errorCode'
) THEN
CREATE TYPE "enum_Connectors_errorCode" AS ENUM (
'ConnectorLockFailure',
'EVCommunicationError',
'GroundFailure',
'HighTemperature',
'InternalError',
'LocalListConflict',
'NoError',
'OtherError',
'OverCurrentFailure',
'PowerMeterFailure',
'PowerSwitchFailure',
'ReaderFailure',
'ResetFailure',
'UnderVoltage',
'OverVoltage',
'WeakSignal'
);
END IF;
END$$;
`);
await queryInterface.changeColumn('InstalledCertificates', 'certificateType', {
type: DataTypes.ENUM(
'V2GRootCertificate',
'MORootCertificate',
'CSMSRootCertificate',
'V2GCertificateChain',
'ManufacturerRootCertificate',
),
allowNull: false,
});
await queryInterface.changeColumn('Connectors', 'status', {
type: DataTypes.ENUM(
'Available',
'Preparing',
'Charging',
'SuspendedEVSE',
'SuspendedEV',
'Finishing',
'Reserved',
'Unavailable',
'Faulted',
),
allowNull: false,
defaultValue: 'Unknown',
});
await queryInterface.changeColumn('Connectors', 'errorCode', {
type: DataTypes.ENUM(
'ConnectorLockFailure',
'EVCommunicationError',
'GroundFailure',
'HighTemperature',
'InternalError',
'LocalListConflict',
'NoError',
'OtherError',
'OverCurrentFailure',
'PowerMeterFailure',
'PowerSwitchFailure',
'ReaderFailure',
'ResetFailure',
'UnderVoltage',
'OverVoltage',
'WeakSignal',
),
allowNull: false,
defaultValue: 'NoError',
});
},
};