Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions docs/DB.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,15 +135,16 @@ Use this checklist any time telemetry fields are added, renamed, or removed.
- Add/remove matching columns in `packages/db/prisma/schema.prisma` under `model telemetry_packet`.
- Keep column names consistent with flattened packet keys (including exact casing, such as `12V` vs `12v`).

### 4) Push schema + regenerate client
### 4) Generate migration + regenerate client

From repo root:

```bash
yarn workspace db db:push
yarn workspace db db:generate
yarn workspace db migrate:dev --name <descriptive_change_name>
```

> **Quick local iteration only (no migration file):** `yarn workspace db db:push` pushes the schema directly without creating a migration. Use this only for throwaway local experiments — never for changes going to production.

### 5) Validate build

```bash
Expand All @@ -161,8 +162,7 @@ yarn workspace server build
1. Remove it from shared types and any packet generators.
2. Remove it from `flattenTelemetryData()` mapping.
3. Remove it from Prisma schema.
4. Run schema sync and builds again.
5. If production data must be preserved, create and review a migration instead of direct push.
4. Run `yarn workspace db migrate:dev --name <descriptive_change_name>` and builds again.

## Common Issues

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,19 +294,19 @@ export const fakeData: ITelemetryData[] = [
},
MotorDetails0: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -317,27 +317,27 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Vq: faker.number.int({ max: 100, min: 0 }),
},
MotorDetails1: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -348,7 +348,7 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Expand Down Expand Up @@ -696,19 +696,19 @@ export const fakeData: ITelemetryData[] = [
},
MotorDetails0: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -719,27 +719,27 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Vq: faker.number.int({ max: 100, min: 0 }),
},
MotorDetails1: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -750,7 +750,7 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Expand Down Expand Up @@ -1098,19 +1098,19 @@ export const fakeData: ITelemetryData[] = [
},
MotorDetails0: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -1121,27 +1121,27 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Vq: faker.number.int({ max: 100, min: 0 }),
},
MotorDetails1: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -1152,7 +1152,7 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Expand Down Expand Up @@ -1500,19 +1500,19 @@ export const fakeData: ITelemetryData[] = [
},
MotorDetails0: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -1523,27 +1523,27 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Vq: faker.number.int({ max: 100, min: 0 }),
},
MotorDetails1: {
ActiveMotor: faker.number.int({ max: 100, min: 0 }),
BEMF_D: faker.number.int({ max: 100, min: 0 }),
BEMF_Q: faker.number.int({ max: 100, min: 0 }),
BEMFd: faker.number.int({ max: 100, min: 0 }),
BEMFq: faker.number.int({ max: 100, min: 0 }),
BusCurrent: faker.number.int({ max: 100, min: 0 }),
BusVoltage: faker.number.int({ max: 100, min: 0 }),
DC_Bus_Ah: faker.number.int({ max: 100, min: 0 }),
DspBoardTemperature: faker.number.int({ max: 100, min: 0 }),
DCBusAh: faker.number.int({ max: 100, min: 0 }),
DspBoardTemp: faker.number.int({ max: 100, min: 0 }),
ErrorFlags: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemperature: faker.number.int({ max: 100, min: 0 }),
HeatsinkTemp: faker.number.int({ max: 100, min: 0 }),
Id: faker.number.int({ max: 100, min: 0 }),
Iq: faker.number.int({ max: 100, min: 0 }),
LimitFlags: faker.number.int({ max: 100, min: 0 }),
MotorId: faker.number.int({ max: 100, min: 0 }),
MotorTemperature: faker.number.int({ max: 100, min: 0 }),
MotorTemp: faker.number.int({ max: 100, min: 0 }),
MotorVelocity: faker.number.int({ max: 100, min: 0 }),
Odometer: faker.number.int({ max: 100, min: 0 }),
PhaseCurrentB: faker.number.int({ max: 100, min: 0 }),
Expand All @@ -1554,7 +1554,7 @@ export const fakeData: ITelemetryData[] = [
Supply15V: faker.number.int({ max: 100, min: 0 }),
Supply1V9: faker.number.int({ max: 100, min: 0 }),
Supply3V3: faker.number.int({ max: 100, min: 0 }),
TritiumId: faker.number.int({ max: 100, min: 0 }),
TritiumID: faker.number.int({ max: 100, min: 0 }),
TxErrorCount: faker.number.int({ max: 100, min: 0 }),
Vd: faker.number.int({ max: 100, min: 0 }),
VehicleVelocity: faker.number.int({ max: 100, min: 0 }),
Expand Down
Loading
Loading