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 41.66% 41.82% +0.16%
==========================================
Files 135 135
Lines 12433 12490 +57
==========================================
+ Hits 5180 5224 +44
- Misses 6698 6711 +13
Partials 555 555 ☔ View full report in Codecov by Sentry. 🚀 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
Add six 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 - 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. 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
34633ae to
a778742
Compare
Add six 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. 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.