# CreatedBy() function · @imqueue/pg-sequelize

Source: https://imqueue.org/api/pg-sequelize/latest/pg-sequelize.createdby/
Published: 2026-08-01
Author: @imqueue maintainers (https://github.com/imqueue)
Package: @imqueue/pg-sequelize 4.2.0 — generated reference, not hand-written

Stamps the decorated column with the acting user id on INSERT, taken from the in-flight IMQ request metadata (`currentMetadata()?.userId`) — so the id never travels through method arguments and cannot be spoofed by a caller.

A property decorator, reusable on any model field. The hook is a no-op when there is no acting user (system / unattributed writes) and never overwrites a value the application set explicitly.

Two hooks are registered, because rows are inserted in two ways: - instance / single `create()` → `beforeCreate` (receives the instance) - static `Model.bulkCreate(records, …)` → `beforeBulkCreate` (receives the built instances; a plain `bulkCreate` does not fire `beforeCreate`, so the per-instance hook alone would be bypassed). Sequelize filters the written columns down to `options.fields` when the caller supplies it, so an injected field is dropped unless also added there.

Mechanism: a property decorator receives the prototype, but Sequelize hook decorators must target a static method on the constructor, so generated static methods are attached to `target.constructor` and registered through the public `@BeforeCreate` / `@BeforeBulkCreate`. Hooks are installed by sequelize-typescript's `installHooks` during `Sequelize#addModels`.

**Signature:**

```typescript
export declare function CreatedBy(target: any, propertyName: string): void;
```

## Parameters


| Parameter | Type | Description |
| --- | --- | --- |
| target | any | the decorated model's prototype |
| propertyName | string | the decorated column property name |


**Returns:**

void

