feat(api): add device identity and lifecycle columns#1029
feat(api): add device identity and lifecycle columns#1029madhavilosetty-intel wants to merge 1 commit into
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1029 +/- ##
==========================================
+ Coverage 43.44% 43.66% +0.22%
==========================================
Files 143 143
Lines 13621 13687 +66
==========================================
+ Hits 5917 5977 +60
- Misses 7143 7147 +4
- Partials 561 563 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
07c8f53 to
6afe2b0
Compare
There was a problem hiding this comment.
Pull request overview
Adds device-identity and lifecycle columns (id, createddate, softdelete, controlmode, upid, sku, connectiontype) to the devices storage layer across all three backends (SQLite/Postgres via a new migration + sqldb repo updates, and MongoDB via the mongo repo + a partial unique index). Surfaces the new fields on the v1 dto.Device, makes id/createdDate server-managed in UseCase.Insert, and adds round-trip / immutability tests plus a Postman assertion for the server-managed identity fields.
Changes:
- Schema + repo plumbing for the seven new columns (SQL migrations, SQL
Insert/Update/Get*builders, MongoUpdate$setmap and partial uniqueidx_devices_id). - Use-case wiring:
dtoToEntity/entityToDTO/deviceFieldSetterspropagate the new fields;Insertgeneratesid(UUID) andcreatedDate(RFC3339Nano UTC) server-side. - Tests + Postman: sqldb identity round-trip and immutability tests, mongo
GetByIDidentity-columns test, custom gomock matcher to ignore server-set fields, Postman assertion thatid/createdDateare returned.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/app/migrations/20260526000000_migrate_device_identity.up.sql | Adds the 7 columns + partial unique index on id. |
| internal/app/migrations/20260526000000_migrate_device_identity.down.sql | Drops the index and the 7 columns. |
| internal/entity/device.go | Adds the 7 fields to the Device entity with bson tags. |
| internal/entity/dto/v1/device.go | Exposes the 7 fields on the v1 DTO with json tags. |
| internal/usecase/devices/usecase.go | Maps the new fields in dtoToEntity/entityToDTO and patch setters. |
| internal/usecase/devices/repo.go | Server-generates ID (UUID) and CreatedDate on Insert. |
| internal/usecase/devices/repo_test.go | Adds a gomock matcher that ignores server-set ID/CreatedDate. |
| internal/usecase/sqldb/device.go | Extends Get/GetByID/GetByTags/GetByColumn/Insert/Update SQL for new columns; omits id/createddate from Update. |
| internal/usecase/sqldb/device_test.go | Adds round-trip + immutability tests and extends in-test CREATE TABLE schemas. |
| internal/usecase/nosqldb/mongo/fields.go | Adds fieldID constant. |
| internal/usecase/nosqldb/mongo/device.go | Adds the new fields to the mongo Update $set map (omitting id/createddate). |
| internal/usecase/nosqldb/mongo/device_test.go | Adds a GetByID identity-columns test. |
| internal/usecase/nosqldb/mongo/client.go | Creates partial unique index idx_devices_id mirroring the SQL one. |
| internal/controller/httpapi/v1/devices_test.go | Marks softdelete as always-present (no omitempty) in PATCH expectations. |
| integration-test/collections/console_mps_apis.postman_collection.json | Asserts id/createdDate are returned by the relevant endpoint. |
c2cc9a6 to
6b6866c
Compare
6b6866c to
34633ae
Compare
34633ae to
a778742
Compare
df97bd2 to
33a5ca7
Compare
Add seven additive columns to the devices table across all three backends (SQLite, Postgres, MongoDB) for issue #843: - id: app-generated UUID surrogate key; stable and immutable - createddate: server-set insert timestamp (RFC3339Nano); immutable - lastupdate: server-set on insert + refreshed on record edits; not touched by heartbeats - isdeleted: logical-deletion flag (column + plumbing only) - deleteddate: server-set soft-delete timestamp; read-only (column + plumbing only) - producttype: manageability SKU (vPro/ISM) - connectiontype: device connection type (CIRA/Direct) id, createddate, and deleteddate are server-managed and immutable. lastupdate is server-managed and refreshed only on the main device Update path; the high-frequency UpdateLastSeen/connection-status heartbeats deliberately leave it untouched to avoid write amplification at fleet scale. A partial unique index on id enforces dedup. DTO, OpenAPI, Postman, and tests are updated. Soft-delete behavior (DELETE handling, read filtering) lands in a separate PR. Resolves: #843
33a5ca7 to
28b71a5
Compare
Add seven additive columns to the devices table across all three
backends (SQLite, Postgres, MongoDB) for issue #843:
id, createddate, and deleteddate are server-managed and immutable.
lastupdate is server-managed and refreshed only on the main device
Update path; the high-frequency UpdateLastSeen/connection-status
heartbeats deliberately leave it untouched to avoid write
amplification at fleet scale. A partial unique index on id enforces
dedup. DTO, OpenAPI, Postman, and tests are updated. Soft-delete
behavior (DELETE handling, read filtering) lands in a separate PR.
Resolves: #843