From 53087f08a54f6577c48e18a4694c4a1f6f956e9e Mon Sep 17 00:00:00 2001 From: garrettmills Date: Fri, 9 Dec 2022 04:42:35 -0600 Subject: [PATCH] Add ability to auto-generate PK before insert --- src/app/cobalt.ts | 1 + src/app/configs/cobalt.config.ts | 2 ++ src/app/http/controllers/cobalt/ResourceAPI.controller.ts | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/src/app/cobalt.ts b/src/app/cobalt.ts index 0df6a11..172d5ad 100644 --- a/src/app/cobalt.ts +++ b/src/app/cobalt.ts @@ -58,6 +58,7 @@ export interface ResourceConfiguration { key: string, collection: string, primaryKey: string, + generateKeyOnInsert?: () => string|number, display: { field?: string, singular: string, diff --git a/src/app/configs/cobalt.config.ts b/src/app/configs/cobalt.config.ts index c581724..b66f869 100644 --- a/src/app/configs/cobalt.config.ts +++ b/src/app/configs/cobalt.config.ts @@ -1,3 +1,4 @@ +import {uuid4} from '@extollo/lib' import {allResourceActions, FieldType, Renderer, ResourceAction, ResourceConfiguration} from '../cobalt' export default { @@ -178,6 +179,7 @@ export default { { key: 'feedPost', primaryKey: 'feed_post_id', + generateKeyOnInsert: uuid4, collection: 'feed_posts', display: { // field: '', diff --git a/src/app/http/controllers/cobalt/ResourceAPI.controller.ts b/src/app/http/controllers/cobalt/ResourceAPI.controller.ts index 057830a..24c9508 100644 --- a/src/app/http/controllers/cobalt/ResourceAPI.controller.ts +++ b/src/app/http/controllers/cobalt/ResourceAPI.controller.ts @@ -83,6 +83,10 @@ export class ResourceAPI extends Controller { queryRow[field.key] = this.castValue(field, value) } + if ( config.generateKeyOnInsert ) { + queryRow[config.primaryKey] = config.generateKeyOnInsert() + } + // Create insert query const result = await this.make(Builder) .table(config.collection)