@happyvertical/smrt-human-resources 0.55.3 → 0.55.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/service-base.d.ts +1 -1
- package/dist/service-base.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -3,9 +3,8 @@ import { HUMAN_RESOURCES_MODULE_META, HUMAN_RESOURCES_UI_SLOTS } from "./ui.js";
|
|
|
3
3
|
import { ObjectRegistry, SmrtCollection, SmrtObject, crossPackageRef, field, foreignKey, isEmbeddedDatabase, isPostgresDatabase, smrt, withEmbeddedWriteQueue } from "@happyvertical/smrt-core";
|
|
4
4
|
import { TenantScoped, getTenantId, tenantId, withTenant } from "@happyvertical/smrt-tenancy";
|
|
5
5
|
import { createLogger } from "@happyvertical/logger";
|
|
6
|
-
import { NestedTransactionError } from "@happyvertical/sql";
|
|
7
6
|
//#region src/__smrt-register__.ts
|
|
8
|
-
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-human-resources","packageVersion":"0.55.3","objects":{"@happyvertical/smrt-human-resources:Employment":{"name":"employment","className":"Employment","qualifiedName":"@happyvertical/smrt-human-resources:Employment","collection":"employments","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}},"userId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-users:User","_meta":{"nullable":true}},"employerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"employeeNumber":{"type":"text","required":false},"workerType":{"type":"text","required":false,"_meta":{}},"position":{"type":"text","required":false,"_meta":{"nullable":true}},"status":{"type":"text","required":false,"_meta":{},"enum":["active","on-leave","ended"]}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"employments","sensitive":true,"conflictColumns":["tenant_id","employee_number"],"indexes":[{"name":"employments_tenant_profile_uq","columns":["tenantId","profileId"],"unique":true},{"name":"employments_tenant_user_idx","columns":["tenantId","userId"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Employment","collectionExportName":"EmploymentCollection","validationRules":[],"schema":{"tableName":"employments","ddl":"CREATE TABLE IF NOT EXISTS \\"employments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID,\\n \\"user_id\\" UUID,\\n \\"employer_profile_id\\" UUID,\\n \\"employee_number\\" TEXT,\\n \\"worker_type\\" TEXT,\\n \\"position\\" TEXT,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employer_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employee_number":{"type":"TEXT","notNull":false,"unique":false},"worker_type":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employments_tenant_id_employee_number_idx","columns":["tenant_id","employee_number"],"unique":true,"nullsNotDistinct":true},{"name":"employments_slug_context_idx","columns":["slug","context"]},{"name":"employments_tenant_profile_uq","columns":["tenant_id","profile_id"],"unique":true},{"name":"employments_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"employments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employments_profile_id_idx","columns":["profile_id"]},{"name":"employments_user_id_idx","columns":["user_id"]},{"name":"employments_employer_profile_id_idx","columns":["employer_profile_id"]}],"version":"ff7ef7a8"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentTerm":{"name":"employmentterm","className":"EmploymentTerm","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentTerm","collection":"employmentterms","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"employmentId":{"type":"foreignKey","required":false,"related":"Employment","_meta":{"onDelete":"RESTRICT"}},"startedOn":{"type":"text","required":false,"_meta":{}},"endedOn":{"type":"text","required":false,"_meta":{"nullable":true}},"endReason":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"employment_terms","sensitive":true,"indexes":[{"name":"employment_terms_employment_idx","columns":["tenantId","employmentId","startedOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"EmploymentTerm","collectionExportName":"EmploymentTermCollection","validationRules":[],"schema":{"tableName":"employment_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"started_on\\" TEXT,\\n \\"ended_on\\" TEXT,\\n \\"end_reason\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"started_on":{"type":"TEXT","notNull":false,"unique":false},"ended_on":{"type":"TEXT","notNull":false,"unique":false},"end_reason":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employment_terms_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_terms_employment_idx","columns":["tenant_id","employment_id","started_on"]},{"name":"employment_terms_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_terms_employment_id_idx","columns":["employment_id"]}],"version":"165d209b"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentChange":{"name":"employmentchange","className":"EmploymentChange","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentChange","collection":"employmentchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"employmentId":{"type":"foreignKey","required":false,"related":"Employment","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["hired","ended","rehired","position-changed","worker-type-changed","leave-started","leave-ended","login-linked","login-unlinked"]},"effectiveOn":{"type":"text","required":false,"_meta":{}},"fromValue":{"type":"text","required":false,"_meta":{"nullable":true}},"toValue":{"type":"text","required":false,"_meta":{"nullable":true}},"note":{"type":"text","required":false},"actorProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"employment_changes","sensitive":true,"indexes":[{"name":"employment_changes_employment_idx","columns":["tenantId","employmentId","effectiveOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"EmploymentChange","collectionExportName":"EmploymentChangeCollection","validationRules":[],"schema":{"tableName":"employment_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"from_value\\" TEXT,\\n \\"to_value\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"from_value":{"type":"TEXT","notNull":false,"unique":false},"to_value":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"employment_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_changes_employment_idx","columns":["tenant_id","employment_id","effective_on"]},{"name":"employment_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_changes_employment_id_idx","columns":["employment_id"]},{"name":"employment_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"5d93422f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentCollection":{"name":"employmentcollection","className":"EmploymentCollection","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentCollection","collection":"employments","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"employments"},"extends":"SmrtCollection","extendsTypeArg":"Employment","exportName":"EmploymentCollection","collectionExportName":"EmploymentCollectionCollection","schema":{"tableName":"employments","ddl":"CREATE TABLE IF NOT EXISTS \\"employments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID,\\n \\"user_id\\" UUID,\\n \\"employer_profile_id\\" UUID,\\n \\"employee_number\\" TEXT,\\n \\"worker_type\\" TEXT,\\n \\"position\\" TEXT,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employer_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employee_number":{"type":"TEXT","notNull":false,"unique":false},"worker_type":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employments_tenant_id_employee_number_idx","columns":["tenant_id","employee_number"],"unique":true,"nullsNotDistinct":true},{"name":"employments_slug_context_idx","columns":["slug","context"]},{"name":"employments_tenant_profile_uq","columns":["tenant_id","profile_id"],"unique":true},{"name":"employments_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"employments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employments_profile_id_idx","columns":["profile_id"]},{"name":"employments_user_id_idx","columns":["user_id"]},{"name":"employments_employer_profile_id_idx","columns":["employer_profile_id"]}],"version":"ff7ef7a8"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentTermCollection":{"name":"employmenttermcollection","className":"EmploymentTermCollection","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentTermCollection","collection":"employmentterms","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"employment_terms"},"extends":"SmrtCollection","extendsTypeArg":"EmploymentTerm","exportName":"EmploymentTermCollection","collectionExportName":"EmploymentTermCollectionCollection","schema":{"tableName":"employment_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"started_on\\" TEXT,\\n \\"ended_on\\" TEXT,\\n \\"end_reason\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"started_on":{"type":"TEXT","notNull":false,"unique":false},"ended_on":{"type":"TEXT","notNull":false,"unique":false},"end_reason":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employment_terms_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_terms_employment_idx","columns":["tenant_id","employment_id","started_on"]},{"name":"employment_terms_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_terms_employment_id_idx","columns":["employment_id"]}],"version":"165d209b"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentChangeCollection":{"name":"employmentchangecollection","className":"EmploymentChangeCollection","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentChangeCollection","collection":"employmentchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"employment_changes"},"extends":"SmrtCollection","extendsTypeArg":"EmploymentChange","exportName":"EmploymentChangeCollection","collectionExportName":"EmploymentChangeCollectionCollection","schema":{"tableName":"employment_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"from_value\\" TEXT,\\n \\"to_value\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"from_value":{"type":"TEXT","notNull":false,"unique":false},"to_value":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"employment_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_changes_employment_idx","columns":["tenant_id","employment_id","effective_on"]},{"name":"employment_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_changes_employment_id_idx","columns":["employment_id"]},{"name":"employment_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"5d93422f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:Qualification":{"name":"qualification","className":"Qualification","qualifiedName":"@happyvertical/smrt-human-resources:Qualification","collection":"qualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"key":{"type":"text","required":false},"name":{"type":"text","required":false},"kind":{"type":"text","required":false,"_meta":{},"enum":["ticket","certification","authorization","training","restriction"]},"issuingBody":{"type":"text","required":false},"expires":{"type":"boolean","required":true,"default":false},"validityMonths":{"type":"integer","required":false,"_meta":{"nullable":true}},"scope":{"type":"text","required":false,"_meta":{},"enum":["person","employment"]},"isActive":{"type":"boolean","required":true,"default":true}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"qualifications","sensitive":true,"conflictColumns":["tenant_id","key"],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Qualification","collectionExportName":"QualificationCollection","displayLabelField":"name","validationRules":[{"field":"expires","rule":"required","fieldType":"boolean"},{"field":"isActive","rule":"required","fieldType":"boolean"}],"schema":{"tableName":"qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"issuing_body\\" TEXT,\\n \\"expires\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"validity_months\\" INTEGER,\\n \\"scope\\" TEXT,\\n \\"is_active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"issuing_body":{"type":"TEXT","notNull":false,"unique":false},"expires":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"validity_months":{"type":"INTEGER","notNull":false,"unique":false},"scope":{"type":"TEXT","notNull":false,"unique":false},"is_active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"qualifications_tenant_id_key_idx","columns":["tenant_id","key"],"unique":true,"nullsNotDistinct":true},{"name":"qualifications_slug_context_idx","columns":["slug","context"]},{"name":"qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c9fa3721"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualification":{"name":"heldqualification","className":"HeldQualification","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualification","collection":"heldqualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"qualificationId":{"type":"foreignKey","required":false,"related":"Qualification","_meta":{"onDelete":"RESTRICT"}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}},"employmentId":{"type":"foreignKey","required":false,"related":"Employment","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"issuedOn":{"type":"text","required":false,"_meta":{}},"expiresOn":{"type":"text","required":false,"_meta":{"nullable":true}},"certificateNumber":{"type":"text","required":false},"status":{"type":"text","required":false,"_meta":{},"enum":["valid","expired","suspended","revoked"]},"verifiedByProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"verifiedAt":{"type":"datetime","required":false},"documentAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset","_meta":{"nullable":true}},"renewalOfId":{"type":"foreignKey","required":false,"related":"HeldQualification","_meta":{"nullable":true,"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"held_qualifications","sensitive":true,"indexes":[{"name":"held_qualifications_profile_idx","columns":["tenantId","profileId","qualificationId"]},{"name":"held_qualifications_expiry_idx","columns":["tenantId","status","expiresOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"HeldQualification","collectionExportName":"HeldQualificationCollection","validationRules":[],"schema":{"tableName":"held_qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"qualification_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"employment_id\\" UUID,\\n \\"issued_on\\" TEXT,\\n \\"expires_on\\" TEXT,\\n \\"certificate_number\\" TEXT,\\n \\"status\\" TEXT,\\n \\"verified_by_profile_id\\" UUID,\\n \\"verified_at\\" TIMESTAMP,\\n \\"document_asset_id\\" UUID,\\n \\"renewal_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"issued_on":{"type":"TEXT","notNull":false,"unique":false},"expires_on":{"type":"TEXT","notNull":false,"unique":false},"certificate_number":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"verified_by_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"document_asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"renewal_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"held_qualifications_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualifications_profile_idx","columns":["tenant_id","profile_id","qualification_id"]},{"name":"held_qualifications_expiry_idx","columns":["tenant_id","status","expires_on"]},{"name":"held_qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualifications_qualification_id_idx","columns":["qualification_id"]},{"name":"held_qualifications_profile_id_idx","columns":["profile_id"]},{"name":"held_qualifications_employment_id_idx","columns":["employment_id"]},{"name":"held_qualifications_verified_by_profile_id_idx","columns":["verified_by_profile_id"]},{"name":"held_qualifications_document_asset_id_idx","columns":["document_asset_id"]},{"name":"held_qualifications_renewal_of_id_idx","columns":["renewal_of_id"]}],"version":"fafbe37f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualificationChange":{"name":"heldqualificationchange","className":"HeldQualificationChange","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualificationChange","collection":"heldqualificationchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"heldQualificationId":{"type":"foreignKey","required":false,"related":"HeldQualification","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["granted","renewed","suspended","reinstated","revoked","expired"]},"effectiveOn":{"type":"text","required":false,"_meta":{}},"reason":{"type":"text","required":false},"actorProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"held_qualification_changes","sensitive":true,"indexes":[{"name":"held_qualification_changes_held_idx","columns":["tenantId","heldQualificationId","effectiveOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"HeldQualificationChange","collectionExportName":"HeldQualificationChangeCollection","validationRules":[],"schema":{"tableName":"held_qualification_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualification_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"held_qualification_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"held_qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"held_qualification_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualification_changes_held_idx","columns":["tenant_id","held_qualification_id","effective_on"]},{"name":"held_qualification_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualification_changes_held_qualification_id_idx","columns":["held_qualification_id"]},{"name":"held_qualification_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"ed9ed5e1"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:QualificationCollection":{"name":"qualificationcollection","className":"QualificationCollection","qualifiedName":"@happyvertical/smrt-human-resources:QualificationCollection","collection":"qualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"qualifications"},"extends":"SmrtCollection","extendsTypeArg":"Qualification","exportName":"QualificationCollection","collectionExportName":"QualificationCollectionCollection","schema":{"tableName":"qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"issuing_body\\" TEXT,\\n \\"expires\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"validity_months\\" INTEGER,\\n \\"scope\\" TEXT,\\n \\"is_active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"issuing_body":{"type":"TEXT","notNull":false,"unique":false},"expires":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"validity_months":{"type":"INTEGER","notNull":false,"unique":false},"scope":{"type":"TEXT","notNull":false,"unique":false},"is_active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"qualifications_tenant_id_key_idx","columns":["tenant_id","key"],"unique":true,"nullsNotDistinct":true},{"name":"qualifications_slug_context_idx","columns":["slug","context"]},{"name":"qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c9fa3721"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualificationCollection":{"name":"heldqualificationcollection","className":"HeldQualificationCollection","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualificationCollection","collection":"heldqualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"held_qualifications"},"extends":"SmrtCollection","extendsTypeArg":"HeldQualification","exportName":"HeldQualificationCollection","collectionExportName":"HeldQualificationCollectionCollection","schema":{"tableName":"held_qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"qualification_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"employment_id\\" UUID,\\n \\"issued_on\\" TEXT,\\n \\"expires_on\\" TEXT,\\n \\"certificate_number\\" TEXT,\\n \\"status\\" TEXT,\\n \\"verified_by_profile_id\\" UUID,\\n \\"verified_at\\" TIMESTAMP,\\n \\"document_asset_id\\" UUID,\\n \\"renewal_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"issued_on":{"type":"TEXT","notNull":false,"unique":false},"expires_on":{"type":"TEXT","notNull":false,"unique":false},"certificate_number":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"verified_by_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"document_asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"renewal_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"held_qualifications_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualifications_profile_idx","columns":["tenant_id","profile_id","qualification_id"]},{"name":"held_qualifications_expiry_idx","columns":["tenant_id","status","expires_on"]},{"name":"held_qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualifications_qualification_id_idx","columns":["qualification_id"]},{"name":"held_qualifications_profile_id_idx","columns":["profile_id"]},{"name":"held_qualifications_employment_id_idx","columns":["employment_id"]},{"name":"held_qualifications_verified_by_profile_id_idx","columns":["verified_by_profile_id"]},{"name":"held_qualifications_document_asset_id_idx","columns":["document_asset_id"]},{"name":"held_qualifications_renewal_of_id_idx","columns":["renewal_of_id"]}],"version":"fafbe37f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualificationChangeCollection":{"name":"heldqualificationchangecollection","className":"HeldQualificationChangeCollection","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualificationChangeCollection","collection":"heldqualificationchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"held_qualification_changes"},"extends":"SmrtCollection","extendsTypeArg":"HeldQualificationChange","exportName":"HeldQualificationChangeCollection","collectionExportName":"HeldQualificationChangeCollectionCollection","schema":{"tableName":"held_qualification_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualification_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"held_qualification_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"held_qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"held_qualification_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualification_changes_held_idx","columns":["tenant_id","held_qualification_id","effective_on"]},{"name":"held_qualification_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualification_changes_held_qualification_id_idx","columns":["held_qualification_id"]},{"name":"held_qualification_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"ed9ed5e1"},"importPath":"@happyvertical/smrt-human-resources"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"stampsConstructors":true}`));
|
|
7
|
+
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-human-resources","packageVersion":"0.55.5","objects":{"@happyvertical/smrt-human-resources:Employment":{"name":"employment","className":"Employment","qualifiedName":"@happyvertical/smrt-human-resources:Employment","collection":"employments","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}},"userId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-users:User","_meta":{"nullable":true}},"employerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"employeeNumber":{"type":"text","required":false},"workerType":{"type":"text","required":false,"_meta":{}},"position":{"type":"text","required":false,"_meta":{"nullable":true}},"status":{"type":"text","required":false,"_meta":{},"enum":["active","on-leave","ended"]}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"employments","sensitive":true,"conflictColumns":["tenant_id","employee_number"],"indexes":[{"name":"employments_tenant_profile_uq","columns":["tenantId","profileId"],"unique":true},{"name":"employments_tenant_user_idx","columns":["tenantId","userId"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Employment","collectionExportName":"EmploymentCollection","validationRules":[],"schema":{"tableName":"employments","ddl":"CREATE TABLE IF NOT EXISTS \\"employments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID,\\n \\"user_id\\" UUID,\\n \\"employer_profile_id\\" UUID,\\n \\"employee_number\\" TEXT,\\n \\"worker_type\\" TEXT,\\n \\"position\\" TEXT,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employer_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employee_number":{"type":"TEXT","notNull":false,"unique":false},"worker_type":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employments_tenant_id_employee_number_idx","columns":["tenant_id","employee_number"],"unique":true,"nullsNotDistinct":true},{"name":"employments_slug_context_idx","columns":["slug","context"]},{"name":"employments_tenant_profile_uq","columns":["tenant_id","profile_id"],"unique":true},{"name":"employments_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"employments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employments_profile_id_idx","columns":["profile_id"]},{"name":"employments_user_id_idx","columns":["user_id"]},{"name":"employments_employer_profile_id_idx","columns":["employer_profile_id"]}],"version":"ff7ef7a8"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentTerm":{"name":"employmentterm","className":"EmploymentTerm","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentTerm","collection":"employmentterms","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"employmentId":{"type":"foreignKey","required":false,"related":"Employment","_meta":{"onDelete":"RESTRICT"}},"startedOn":{"type":"text","required":false,"_meta":{}},"endedOn":{"type":"text","required":false,"_meta":{"nullable":true}},"endReason":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"employment_terms","sensitive":true,"indexes":[{"name":"employment_terms_employment_idx","columns":["tenantId","employmentId","startedOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"EmploymentTerm","collectionExportName":"EmploymentTermCollection","validationRules":[],"schema":{"tableName":"employment_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"started_on\\" TEXT,\\n \\"ended_on\\" TEXT,\\n \\"end_reason\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"started_on":{"type":"TEXT","notNull":false,"unique":false},"ended_on":{"type":"TEXT","notNull":false,"unique":false},"end_reason":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employment_terms_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_terms_employment_idx","columns":["tenant_id","employment_id","started_on"]},{"name":"employment_terms_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_terms_employment_id_idx","columns":["employment_id"]}],"version":"165d209b"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentChange":{"name":"employmentchange","className":"EmploymentChange","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentChange","collection":"employmentchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"employmentId":{"type":"foreignKey","required":false,"related":"Employment","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["hired","ended","rehired","position-changed","worker-type-changed","leave-started","leave-ended","login-linked","login-unlinked"]},"effectiveOn":{"type":"text","required":false,"_meta":{}},"fromValue":{"type":"text","required":false,"_meta":{"nullable":true}},"toValue":{"type":"text","required":false,"_meta":{"nullable":true}},"note":{"type":"text","required":false},"actorProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"employment_changes","sensitive":true,"indexes":[{"name":"employment_changes_employment_idx","columns":["tenantId","employmentId","effectiveOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"EmploymentChange","collectionExportName":"EmploymentChangeCollection","validationRules":[],"schema":{"tableName":"employment_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"from_value\\" TEXT,\\n \\"to_value\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"from_value":{"type":"TEXT","notNull":false,"unique":false},"to_value":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"employment_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_changes_employment_idx","columns":["tenant_id","employment_id","effective_on"]},{"name":"employment_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_changes_employment_id_idx","columns":["employment_id"]},{"name":"employment_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"5d93422f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentCollection":{"name":"employmentcollection","className":"EmploymentCollection","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentCollection","collection":"employments","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"employments"},"extends":"SmrtCollection","extendsTypeArg":"Employment","exportName":"EmploymentCollection","collectionExportName":"EmploymentCollectionCollection","schema":{"tableName":"employments","ddl":"CREATE TABLE IF NOT EXISTS \\"employments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID,\\n \\"user_id\\" UUID,\\n \\"employer_profile_id\\" UUID,\\n \\"employee_number\\" TEXT,\\n \\"worker_type\\" TEXT,\\n \\"position\\" TEXT,\\n \\"status\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employer_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employee_number":{"type":"TEXT","notNull":false,"unique":false},"worker_type":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employments_tenant_id_employee_number_idx","columns":["tenant_id","employee_number"],"unique":true,"nullsNotDistinct":true},{"name":"employments_slug_context_idx","columns":["slug","context"]},{"name":"employments_tenant_profile_uq","columns":["tenant_id","profile_id"],"unique":true},{"name":"employments_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"employments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employments_profile_id_idx","columns":["profile_id"]},{"name":"employments_user_id_idx","columns":["user_id"]},{"name":"employments_employer_profile_id_idx","columns":["employer_profile_id"]}],"version":"ff7ef7a8"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentTermCollection":{"name":"employmenttermcollection","className":"EmploymentTermCollection","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentTermCollection","collection":"employmentterms","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"employment_terms"},"extends":"SmrtCollection","extendsTypeArg":"EmploymentTerm","exportName":"EmploymentTermCollection","collectionExportName":"EmploymentTermCollectionCollection","schema":{"tableName":"employment_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"started_on\\" TEXT,\\n \\"ended_on\\" TEXT,\\n \\"end_reason\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"started_on":{"type":"TEXT","notNull":false,"unique":false},"ended_on":{"type":"TEXT","notNull":false,"unique":false},"end_reason":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"employment_terms_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_terms_employment_idx","columns":["tenant_id","employment_id","started_on"]},{"name":"employment_terms_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_terms_employment_id_idx","columns":["employment_id"]}],"version":"165d209b"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:EmploymentChangeCollection":{"name":"employmentchangecollection","className":"EmploymentChangeCollection","qualifiedName":"@happyvertical/smrt-human-resources:EmploymentChangeCollection","collection":"employmentchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/employment/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"employment_changes"},"extends":"SmrtCollection","extendsTypeArg":"EmploymentChange","exportName":"EmploymentChangeCollection","collectionExportName":"EmploymentChangeCollectionCollection","schema":{"tableName":"employment_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"employment_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"employment_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"from_value\\" TEXT,\\n \\"to_value\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"from_value":{"type":"TEXT","notNull":false,"unique":false},"to_value":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"employment_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"employment_changes_employment_idx","columns":["tenant_id","employment_id","effective_on"]},{"name":"employment_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"employment_changes_employment_id_idx","columns":["employment_id"]},{"name":"employment_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"5d93422f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:Qualification":{"name":"qualification","className":"Qualification","qualifiedName":"@happyvertical/smrt-human-resources:Qualification","collection":"qualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"key":{"type":"text","required":false},"name":{"type":"text","required":false},"kind":{"type":"text","required":false,"_meta":{},"enum":["ticket","certification","authorization","training","restriction"]},"issuingBody":{"type":"text","required":false},"expires":{"type":"boolean","required":true,"default":false},"validityMonths":{"type":"integer","required":false,"_meta":{"nullable":true}},"scope":{"type":"text","required":false,"_meta":{},"enum":["person","employment"]},"isActive":{"type":"boolean","required":true,"default":true}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"qualifications","sensitive":true,"conflictColumns":["tenant_id","key"],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Qualification","collectionExportName":"QualificationCollection","displayLabelField":"name","validationRules":[{"field":"expires","rule":"required","fieldType":"boolean"},{"field":"isActive","rule":"required","fieldType":"boolean"}],"schema":{"tableName":"qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"issuing_body\\" TEXT,\\n \\"expires\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"validity_months\\" INTEGER,\\n \\"scope\\" TEXT,\\n \\"is_active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"issuing_body":{"type":"TEXT","notNull":false,"unique":false},"expires":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"validity_months":{"type":"INTEGER","notNull":false,"unique":false},"scope":{"type":"TEXT","notNull":false,"unique":false},"is_active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"qualifications_tenant_id_key_idx","columns":["tenant_id","key"],"unique":true,"nullsNotDistinct":true},{"name":"qualifications_slug_context_idx","columns":["slug","context"]},{"name":"qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c9fa3721"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualification":{"name":"heldqualification","className":"HeldQualification","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualification","collection":"heldqualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"qualificationId":{"type":"foreignKey","required":false,"related":"Qualification","_meta":{"onDelete":"RESTRICT"}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}},"employmentId":{"type":"foreignKey","required":false,"related":"Employment","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"issuedOn":{"type":"text","required":false,"_meta":{}},"expiresOn":{"type":"text","required":false,"_meta":{"nullable":true}},"certificateNumber":{"type":"text","required":false},"status":{"type":"text","required":false,"_meta":{},"enum":["valid","expired","suspended","revoked"]},"verifiedByProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"verifiedAt":{"type":"datetime","required":false},"documentAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset","_meta":{"nullable":true}},"renewalOfId":{"type":"foreignKey","required":false,"related":"HeldQualification","_meta":{"nullable":true,"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"held_qualifications","sensitive":true,"indexes":[{"name":"held_qualifications_profile_idx","columns":["tenantId","profileId","qualificationId"]},{"name":"held_qualifications_expiry_idx","columns":["tenantId","status","expiresOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"HeldQualification","collectionExportName":"HeldQualificationCollection","validationRules":[],"schema":{"tableName":"held_qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"qualification_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"employment_id\\" UUID,\\n \\"issued_on\\" TEXT,\\n \\"expires_on\\" TEXT,\\n \\"certificate_number\\" TEXT,\\n \\"status\\" TEXT,\\n \\"verified_by_profile_id\\" UUID,\\n \\"verified_at\\" TIMESTAMP,\\n \\"document_asset_id\\" UUID,\\n \\"renewal_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"issued_on":{"type":"TEXT","notNull":false,"unique":false},"expires_on":{"type":"TEXT","notNull":false,"unique":false},"certificate_number":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"verified_by_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"document_asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"renewal_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"held_qualifications_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualifications_profile_idx","columns":["tenant_id","profile_id","qualification_id"]},{"name":"held_qualifications_expiry_idx","columns":["tenant_id","status","expires_on"]},{"name":"held_qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualifications_qualification_id_idx","columns":["qualification_id"]},{"name":"held_qualifications_profile_id_idx","columns":["profile_id"]},{"name":"held_qualifications_employment_id_idx","columns":["employment_id"]},{"name":"held_qualifications_verified_by_profile_id_idx","columns":["verified_by_profile_id"]},{"name":"held_qualifications_document_asset_id_idx","columns":["document_asset_id"]},{"name":"held_qualifications_renewal_of_id_idx","columns":["renewal_of_id"]}],"version":"fafbe37f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualificationChange":{"name":"heldqualificationchange","className":"HeldQualificationChange","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualificationChange","collection":"heldqualificationchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"heldQualificationId":{"type":"foreignKey","required":false,"related":"HeldQualification","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["granted","renewed","suspended","reinstated","revoked","expired"]},"effectiveOn":{"type":"text","required":false,"_meta":{}},"reason":{"type":"text","required":false},"actorProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"held_qualification_changes","sensitive":true,"indexes":[{"name":"held_qualification_changes_held_idx","columns":["tenantId","heldQualificationId","effectiveOn"]}],"api":{"include":[]},"cli":{"include":[]},"mcp":{"include":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"HeldQualificationChange","collectionExportName":"HeldQualificationChangeCollection","validationRules":[],"schema":{"tableName":"held_qualification_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualification_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"held_qualification_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"held_qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"held_qualification_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualification_changes_held_idx","columns":["tenant_id","held_qualification_id","effective_on"]},{"name":"held_qualification_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualification_changes_held_qualification_id_idx","columns":["held_qualification_id"]},{"name":"held_qualification_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"ed9ed5e1"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:QualificationCollection":{"name":"qualificationcollection","className":"QualificationCollection","qualifiedName":"@happyvertical/smrt-human-resources:QualificationCollection","collection":"qualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"qualifications"},"extends":"SmrtCollection","extendsTypeArg":"Qualification","exportName":"QualificationCollection","collectionExportName":"QualificationCollectionCollection","schema":{"tableName":"qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"issuing_body\\" TEXT,\\n \\"expires\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"validity_months\\" INTEGER,\\n \\"scope\\" TEXT,\\n \\"is_active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"issuing_body":{"type":"TEXT","notNull":false,"unique":false},"expires":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"validity_months":{"type":"INTEGER","notNull":false,"unique":false},"scope":{"type":"TEXT","notNull":false,"unique":false},"is_active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"qualifications_tenant_id_key_idx","columns":["tenant_id","key"],"unique":true,"nullsNotDistinct":true},{"name":"qualifications_slug_context_idx","columns":["slug","context"]},{"name":"qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"c9fa3721"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualificationCollection":{"name":"heldqualificationcollection","className":"HeldQualificationCollection","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualificationCollection","collection":"heldqualifications","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"held_qualifications"},"extends":"SmrtCollection","extendsTypeArg":"HeldQualification","exportName":"HeldQualificationCollection","collectionExportName":"HeldQualificationCollectionCollection","schema":{"tableName":"held_qualifications","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualifications\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"qualification_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"employment_id\\" UUID,\\n \\"issued_on\\" TEXT,\\n \\"expires_on\\" TEXT,\\n \\"certificate_number\\" TEXT,\\n \\"status\\" TEXT,\\n \\"verified_by_profile_id\\" UUID,\\n \\"verified_at\\" TIMESTAMP,\\n \\"document_asset_id\\" UUID,\\n \\"renewal_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"employment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"employments","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"issued_on":{"type":"TEXT","notNull":false,"unique":false},"expires_on":{"type":"TEXT","notNull":false,"unique":false},"certificate_number":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false},"verified_by_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"document_asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"renewal_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"held_qualifications_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualifications_profile_idx","columns":["tenant_id","profile_id","qualification_id"]},{"name":"held_qualifications_expiry_idx","columns":["tenant_id","status","expires_on"]},{"name":"held_qualifications_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualifications_qualification_id_idx","columns":["qualification_id"]},{"name":"held_qualifications_profile_id_idx","columns":["profile_id"]},{"name":"held_qualifications_employment_id_idx","columns":["employment_id"]},{"name":"held_qualifications_verified_by_profile_id_idx","columns":["verified_by_profile_id"]},{"name":"held_qualifications_document_asset_id_idx","columns":["document_asset_id"]},{"name":"held_qualifications_renewal_of_id_idx","columns":["renewal_of_id"]}],"version":"fafbe37f"},"importPath":"@happyvertical/smrt-human-resources"},"@happyvertical/smrt-human-resources:HeldQualificationChangeCollection":{"name":"heldqualificationchangecollection","className":"HeldQualificationChangeCollection","qualifiedName":"@happyvertical/smrt-human-resources:HeldQualificationChangeCollection","collection":"heldqualificationchanges","filePath":"/home/runner/work/smrt/smrt/packages/human-resources/src/qualifications/models.ts","packageName":"@happyvertical/smrt-human-resources","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"held_qualification_changes"},"extends":"SmrtCollection","extendsTypeArg":"HeldQualificationChange","exportName":"HeldQualificationChangeCollection","collectionExportName":"HeldQualificationChangeCollectionCollection","schema":{"tableName":"held_qualification_changes","ddl":"CREATE TABLE IF NOT EXISTS \\"held_qualification_changes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"held_qualification_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"actor_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"held_qualification_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"held_qualifications","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"held_qualification_changes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"held_qualification_changes_held_idx","columns":["tenant_id","held_qualification_id","effective_on"]},{"name":"held_qualification_changes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"held_qualification_changes_held_qualification_id_idx","columns":["held_qualification_id"]},{"name":"held_qualification_changes_actor_profile_id_idx","columns":["actor_profile_id"]}],"version":"ed9ed5e1"},"importPath":"@happyvertical/smrt-human-resources"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"stampsConstructors":true}`));
|
|
9
8
|
//#endregion
|
|
10
9
|
//#region src/dates.ts
|
|
11
10
|
var ISO_DATE = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
@@ -505,6 +504,9 @@ async function revokeEmploymentQualifications(db, actor, employmentId, effective
|
|
|
505
504
|
//#endregion
|
|
506
505
|
//#region src/service-base.ts
|
|
507
506
|
var logger = createLogger({ level: "info" });
|
|
507
|
+
function isNestedTransactionError(error) {
|
|
508
|
+
return error instanceof Error && error.name === "NestedTransactionError";
|
|
509
|
+
}
|
|
508
510
|
var HrService = class {
|
|
509
511
|
constructor(db, actor, options = {}) {
|
|
510
512
|
this.db = db;
|
|
@@ -560,7 +562,7 @@ var HrService = class {
|
|
|
560
562
|
try {
|
|
561
563
|
tx = await begin.call(this.db);
|
|
562
564
|
} catch (error) {
|
|
563
|
-
if (error
|
|
565
|
+
if (isNestedTransactionError(error)) throw unsupported();
|
|
564
566
|
throw error;
|
|
565
567
|
}
|
|
566
568
|
let value;
|