Storage buckets are currently identified only by an auto-generated UUID (e.g. 550e8400-e29b-41d4-a716-446655440000), which is opaque. Users have no way to attach a human-readable label/name at creation time, forcing dashboards or clients to maintain their own label-to-ID mappings externally.
An optional label (or name) field should be accepted at bucket creation time, stored in the database, and returned in all bucket listing and lookup responses. The field must remain optional so existing integrations are not broken.
- Database schema (
PersistentStorageFactory.ts): add label TEXT (nullable) column to the persistent_storage_buckets table; include a migration path for existing rows
- Types:
- Add
label?: string to BucketRow
- Add
label?: string to PersistentStorageBucketRecord
- Add
label?: string to CreateBucketResult
- Command (
src/@types/commands.ts): add label?: string to PersistentStorageCreateBucketCommand
- Handler (
src/components/core/handler/persistentStorage.ts): pass label through PersistentStorageCreateBucketHandler.handle() and validate()
- Backend implementations: update
createNewBucket() in both PersistentStorageLocalFS.ts and PersistentStorageS3.ts to accept and store the optional label
- Read path: ensure
dbUpsertBucket() and all bucket-listing queries return the label field
Storage buckets are currently identified only by an auto-generated UUID (e.g.
550e8400-e29b-41d4-a716-446655440000), which is opaque. Users have no way to attach a human-readable label/name at creation time, forcing dashboards or clients to maintain their own label-to-ID mappings externally.An optional
label(orname) field should be accepted at bucket creation time, stored in the database, and returned in all bucket listing and lookup responses. The field must remain optional so existing integrations are not broken.PersistentStorageFactory.ts): addlabel TEXT(nullable) column to thepersistent_storage_bucketstable; include a migration path for existing rowslabel?: stringtoBucketRowlabel?: stringtoPersistentStorageBucketRecordlabel?: stringtoCreateBucketResultsrc/@types/commands.ts): addlabel?: stringtoPersistentStorageCreateBucketCommandsrc/components/core/handler/persistentStorage.ts): passlabelthroughPersistentStorageCreateBucketHandler.handle()andvalidate()createNewBucket()in bothPersistentStorageLocalFS.tsandPersistentStorageS3.tsto accept and store the optional labeldbUpsertBucket()and all bucket-listing queries return thelabelfield