@beignet/provider-db-drizzle 0.0.22 → 0.0.24
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/CHANGELOG.md +8 -0
- package/README.md +89 -13
- package/dist/mysql/index.d.ts +31 -1
- package/dist/mysql/index.d.ts.map +1 -1
- package/dist/mysql/index.js +59 -0
- package/dist/mysql/index.js.map +1 -1
- package/dist/postgres/index.d.ts +27 -1
- package/dist/postgres/index.d.ts.map +1 -1
- package/dist/postgres/index.js +55 -0
- package/dist/postgres/index.js.map +1 -1
- package/dist/shared/audit-core.d.ts +33 -0
- package/dist/shared/audit-core.d.ts.map +1 -0
- package/dist/shared/audit-core.js +85 -0
- package/dist/shared/audit-core.js.map +1 -0
- package/dist/sqlite/index.d.ts +27 -1
- package/dist/sqlite/index.d.ts.map +1 -1
- package/dist/sqlite/index.js +55 -0
- package/dist/sqlite/index.js.map +1 -1
- package/package.json +2 -2
- package/src/mysql/index.ts +95 -0
- package/src/postgres/index.ts +91 -0
- package/src/shared/audit-core.ts +134 -0
- package/src/sqlite/index.ts +91 -0
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -22,8 +22,8 @@ workflow.
|
|
|
22
22
|
- Factory-based provider creation with your schema at the call site.
|
|
23
23
|
- Full TypeScript inference from your Drizzle schema.
|
|
24
24
|
- One subpath per backend — SQLite (libSQL/Turso), Postgres (node-postgres),
|
|
25
|
-
and MySQL (`mysql2`) — with the same provider, Unit of Work,
|
|
26
|
-
idempotency surface.
|
|
25
|
+
and MySQL (`mysql2`) — with the same provider, Unit of Work, audit log,
|
|
26
|
+
outbox, and idempotency surface.
|
|
27
27
|
- Keeps runtime provider wiring separate from Drizzle CLI configuration.
|
|
28
28
|
- Provides a Unit of Work helper that can build transaction-scoped repositories,
|
|
29
29
|
audit logs, outbox recorders, and other app-owned ports from one Drizzle
|
|
@@ -463,6 +463,8 @@ import {
|
|
|
463
463
|
drainOutbox,
|
|
464
464
|
} from "@beignet/core/outbox";
|
|
465
465
|
import {
|
|
466
|
+
createDrizzleSqliteAuditLogPort,
|
|
467
|
+
createDrizzleSqliteAuditLogSetupStatements,
|
|
466
468
|
createDrizzleSqliteIdempotencyPort,
|
|
467
469
|
createDrizzleSqliteIdempotencySetupStatements,
|
|
468
470
|
createDrizzleSqliteOutboxPort,
|
|
@@ -471,10 +473,14 @@ import {
|
|
|
471
473
|
} from "@beignet/provider-db-drizzle/sqlite";
|
|
472
474
|
```
|
|
473
475
|
|
|
474
|
-
Add Beignet's outbox and idempotency tables to your app-owned migration
|
|
475
|
-
bootstrap flow:
|
|
476
|
+
Add Beignet's audit, outbox, and idempotency tables to your app-owned migration
|
|
477
|
+
or bootstrap flow:
|
|
476
478
|
|
|
477
479
|
```ts
|
|
480
|
+
for (const statement of createDrizzleSqliteAuditLogSetupStatements()) {
|
|
481
|
+
await client.execute(statement);
|
|
482
|
+
}
|
|
483
|
+
|
|
478
484
|
for (const statement of createDrizzleSqliteIdempotencySetupStatements()) {
|
|
479
485
|
await client.execute(statement);
|
|
480
486
|
}
|
|
@@ -490,11 +496,13 @@ Then expose transaction-scoped outbox-backed event recording:
|
|
|
490
496
|
uow: createDrizzleSqliteUnitOfWork({
|
|
491
497
|
db: ports.db.drizzle,
|
|
492
498
|
createTransactionPorts: (tx) => {
|
|
499
|
+
const audit = createDrizzleSqliteAuditLogPort(tx);
|
|
493
500
|
const idempotency = createDrizzleSqliteIdempotencyPort(tx);
|
|
494
501
|
const outbox = createDrizzleSqliteOutboxPort(tx);
|
|
495
502
|
|
|
496
503
|
return {
|
|
497
504
|
...createRepositories(tx),
|
|
505
|
+
audit,
|
|
498
506
|
events: createOutboxEventRecorder(outbox),
|
|
499
507
|
idempotency,
|
|
500
508
|
outbox,
|
|
@@ -509,11 +517,47 @@ feature history repositories, and durable idempotency records. Root ports are
|
|
|
509
517
|
still useful for reads and background work, but they do not participate in the
|
|
510
518
|
current transaction unless you rebuild them from `tx`.
|
|
511
519
|
|
|
520
|
+
Use `createDrizzleSqliteAuditLogPort(...)` at the root app port for ordinary
|
|
521
|
+
audit writes, and rebuild it from `tx` when audit rows must commit atomically
|
|
522
|
+
with the business write.
|
|
523
|
+
|
|
512
524
|
Use `createDrizzleSqliteIdempotencyPort(...)` at the root app port for ordinary
|
|
513
525
|
retry-safe commands, and rebuild it from `tx` when the idempotency reservation,
|
|
514
526
|
business write, audit row, outbox records, and replay result must commit
|
|
515
527
|
together.
|
|
516
528
|
|
|
529
|
+
## Durable audit log
|
|
530
|
+
|
|
531
|
+
Use `createDrizzleSqliteAuditLogPort(...)` when `AuditLogPort` should write
|
|
532
|
+
through SQL instead of an in-memory test adapter:
|
|
533
|
+
|
|
534
|
+
```ts
|
|
535
|
+
import { createAmbientAuditLog } from "@beignet/core/server";
|
|
536
|
+
import { createInstrumentedAuditLog } from "@beignet/core/ports";
|
|
537
|
+
import {
|
|
538
|
+
createDrizzleSqliteAuditLogPort,
|
|
539
|
+
createDrizzleSqliteAuditLogSetupStatements,
|
|
540
|
+
} from "@beignet/provider-db-drizzle/sqlite";
|
|
541
|
+
|
|
542
|
+
for (const statement of createDrizzleSqliteAuditLogSetupStatements()) {
|
|
543
|
+
await client.execute(statement);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
const audit = createAmbientAuditLog(
|
|
547
|
+
createInstrumentedAuditLog({
|
|
548
|
+
audit: createDrizzleSqliteAuditLogPort(db),
|
|
549
|
+
instrumentation: ports,
|
|
550
|
+
}),
|
|
551
|
+
);
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
The default table is `audit_log`; pass `tableName` to both setup and port
|
|
555
|
+
creation if your app uses a different table name. The adapter normalizes audit
|
|
556
|
+
entries, applies Beignet's default metadata redaction, stores metadata as JSON
|
|
557
|
+
text, and accepts either a root database or transaction client. Pass `redact`
|
|
558
|
+
for a final app-owned redaction step, or `createId` in runtimes without
|
|
559
|
+
`globalThis.crypto.randomUUID()`.
|
|
560
|
+
|
|
517
561
|
## Durable idempotency
|
|
518
562
|
|
|
519
563
|
Use `createDrizzleSqliteIdempotencyPort(...)` when `runIdempotently(...)` needs
|
|
@@ -717,6 +761,8 @@ uow: createDrizzlePostgresUnitOfWork({
|
|
|
717
761
|
|
|
718
762
|
```ts
|
|
719
763
|
import {
|
|
764
|
+
createDrizzlePostgresAuditLogPort,
|
|
765
|
+
createDrizzlePostgresAuditLogSetupStatements,
|
|
720
766
|
createDrizzlePostgresIdempotencyPort,
|
|
721
767
|
createDrizzlePostgresIdempotencySetupStatements,
|
|
722
768
|
createDrizzlePostgresOutboxPort,
|
|
@@ -731,6 +777,10 @@ for (const statement of createDrizzlePostgresIdempotencySetupStatements()) {
|
|
|
731
777
|
await pool.query(statement);
|
|
732
778
|
}
|
|
733
779
|
|
|
780
|
+
for (const statement of createDrizzlePostgresAuditLogSetupStatements()) {
|
|
781
|
+
await pool.query(statement);
|
|
782
|
+
}
|
|
783
|
+
|
|
734
784
|
for (const statement of createDrizzlePostgresOutboxSetupStatements()) {
|
|
735
785
|
await pool.query(statement);
|
|
736
786
|
}
|
|
@@ -740,11 +790,13 @@ Then build transaction-scoped ports exactly as in the SQLite walkthrough:
|
|
|
740
790
|
|
|
741
791
|
```ts
|
|
742
792
|
createTransactionPorts: (tx) => {
|
|
793
|
+
const audit = createDrizzlePostgresAuditLogPort(tx);
|
|
743
794
|
const idempotency = createDrizzlePostgresIdempotencyPort(tx);
|
|
744
795
|
const outbox = createDrizzlePostgresOutboxPort(tx);
|
|
745
796
|
|
|
746
797
|
return {
|
|
747
798
|
...createRepositories(tx),
|
|
799
|
+
audit,
|
|
748
800
|
events: createOutboxEventRecorder(outbox),
|
|
749
801
|
idempotency,
|
|
750
802
|
outbox,
|
|
@@ -752,10 +804,10 @@ createTransactionPorts: (tx) => {
|
|
|
752
804
|
},
|
|
753
805
|
```
|
|
754
806
|
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
`DrizzlePostgresIdempotencyMutationError` when `complete(...)` or
|
|
758
|
-
does not match an in-progress reservation.
|
|
807
|
+
The audit, outbox, and idempotency factories accept a root database or
|
|
808
|
+
transaction client plus the same options as the SQLite ports. The idempotency
|
|
809
|
+
port throws `DrizzlePostgresIdempotencyMutationError` when `complete(...)` or
|
|
810
|
+
`fail(...)` does not match an in-progress reservation.
|
|
759
811
|
|
|
760
812
|
## MySQL
|
|
761
813
|
|
|
@@ -832,12 +884,14 @@ hatch.
|
|
|
832
884
|
Type repository factories with `DrizzleMysqlDatabase<TSchema>`;
|
|
833
885
|
`DrizzleMysqlTransaction` is the transaction client type.
|
|
834
886
|
|
|
835
|
-
### Unit of work, outbox, and idempotency
|
|
887
|
+
### Unit of work, audit log, outbox, and idempotency
|
|
836
888
|
|
|
837
889
|
The factories mirror the Postgres section with `Mysql` naming:
|
|
838
890
|
|
|
839
891
|
```ts
|
|
840
892
|
import {
|
|
893
|
+
createDrizzleMysqlAuditLogPort,
|
|
894
|
+
createDrizzleMysqlAuditLogSetupStatements,
|
|
841
895
|
createDrizzleMysqlIdempotencyPort,
|
|
842
896
|
createDrizzleMysqlIdempotencySetupStatements,
|
|
843
897
|
createDrizzleMysqlOutboxPort,
|
|
@@ -849,6 +903,10 @@ import {
|
|
|
849
903
|
Run the setup statements through your app-owned migration or bootstrap flow:
|
|
850
904
|
|
|
851
905
|
```ts
|
|
906
|
+
for (const statement of createDrizzleMysqlAuditLogSetupStatements()) {
|
|
907
|
+
await pool.query(statement);
|
|
908
|
+
}
|
|
909
|
+
|
|
852
910
|
for (const statement of createDrizzleMysqlIdempotencySetupStatements()) {
|
|
853
911
|
await pool.query(statement);
|
|
854
912
|
}
|
|
@@ -873,10 +931,11 @@ namespaces, keys, and scope values short.
|
|
|
873
931
|
These choices are deliberate and shared across the three backends:
|
|
874
932
|
|
|
875
933
|
- **ISO-8601 text timestamps.** All three dialects store outbox and
|
|
876
|
-
idempotency timestamps as ISO-8601 UTC strings in
|
|
877
|
-
retry timing, lease expiry,
|
|
878
|
-
|
|
879
|
-
may move the Postgres ports to
|
|
934
|
+
idempotency timestamps, plus audit `occurred_at`, as ISO-8601 UTC strings in
|
|
935
|
+
text columns. This keeps retry timing, lease expiry, replay semantics, and
|
|
936
|
+
audit ordering identical across backends, and lexicographic ordering matches
|
|
937
|
+
chronological ordering. A later release may move the Postgres ports to
|
|
938
|
+
`timestamptz`.
|
|
880
939
|
- **MySQL key length limits.** SQLite and Postgres use unbounded text columns
|
|
881
940
|
for idempotency keys; MySQL needs bounded `varchar` columns for its unique
|
|
882
941
|
index, so over-length keys fail loudly rather than truncating silently.
|
|
@@ -1086,6 +1145,23 @@ Returns SQL setup statements for the app-owned outbox table and indexes. Run
|
|
|
1086
1145
|
these through your migration/bootstrap flow or translate them into your normal
|
|
1087
1146
|
Drizzle migrations.
|
|
1088
1147
|
|
|
1148
|
+
### `createDrizzleSqliteAuditLogPort<TSchema>(db, options?)`
|
|
1149
|
+
|
|
1150
|
+
Factory function to create a SQL-backed `AuditLogPort` from a root Drizzle
|
|
1151
|
+
database or transaction client.
|
|
1152
|
+
|
|
1153
|
+
**Parameters:**
|
|
1154
|
+
- `db` (required): A `DrizzleSqliteDatabase<TSchema>` root database or transaction
|
|
1155
|
+
- `options.tableName` (optional): Audit log table name, defaults to `"audit_log"`
|
|
1156
|
+
- `options.redact` (optional): Final app-owned redaction hook
|
|
1157
|
+
- `options.createId` (optional): Audit row ID factory
|
|
1158
|
+
|
|
1159
|
+
### `createDrizzleSqliteAuditLogSetupStatements(options?)`
|
|
1160
|
+
|
|
1161
|
+
Returns SQL setup statements for the app-owned audit log table and indexes.
|
|
1162
|
+
Run these through your migration/bootstrap flow or translate them into your
|
|
1163
|
+
normal Drizzle migrations.
|
|
1164
|
+
|
|
1089
1165
|
### `createDrizzleSqliteIdempotencyPort<TSchema>(db, options?)`
|
|
1090
1166
|
|
|
1091
1167
|
Factory function to create a SQL-backed `IdempotencyPort` from a root Drizzle
|
package/dist/mysql/index.d.ts
CHANGED
|
@@ -28,12 +28,13 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import type { IdempotencyPort } from "@beignet/core/idempotency";
|
|
30
30
|
import type { OutboxPort } from "@beignet/core/outbox";
|
|
31
|
-
import { type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
|
|
31
|
+
import { type AuditLogPort, type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
|
|
32
32
|
import { type ExtractTablesWithRelations } from "drizzle-orm";
|
|
33
33
|
import type { MySqlDatabase, MySqlQueryResultHKT, MySqlTransaction, MySqlTransactionConfig, PreparedQueryHKTBase } from "drizzle-orm/mysql-core";
|
|
34
34
|
import { type MySql2Database } from "drizzle-orm/mysql2";
|
|
35
35
|
import type { Pool, PoolOptions } from "mysql2/promise";
|
|
36
36
|
import { z } from "zod";
|
|
37
|
+
import { type DrizzleAuditLogCoreOptions } from "../shared/audit-core.js";
|
|
37
38
|
import { type DbHealth } from "../shared/health.js";
|
|
38
39
|
/**
|
|
39
40
|
* Typed database port interface.
|
|
@@ -110,6 +111,17 @@ export interface DrizzleMysqlUnitOfWorkOptions<TSchema extends Record<string, un
|
|
|
110
111
|
* decides which transaction-scoped ports to create.
|
|
111
112
|
*/
|
|
112
113
|
export declare function createDrizzleMysqlUnitOfWork<TSchema extends Record<string, unknown>, TxPorts>(options: DrizzleMysqlUnitOfWorkOptions<TSchema, TxPorts>): UnitOfWorkPort<TxPorts>;
|
|
114
|
+
/**
|
|
115
|
+
* Options for a Drizzle MySQL-backed audit log port.
|
|
116
|
+
*/
|
|
117
|
+
export interface DrizzleMysqlAuditLogOptions extends DrizzleAuditLogCoreOptions {
|
|
118
|
+
/**
|
|
119
|
+
* Table that stores audit log entries.
|
|
120
|
+
*
|
|
121
|
+
* Default: "audit_log".
|
|
122
|
+
*/
|
|
123
|
+
tableName?: string;
|
|
124
|
+
}
|
|
113
125
|
/**
|
|
114
126
|
* Options for a Drizzle MySQL-backed outbox port.
|
|
115
127
|
*/
|
|
@@ -125,6 +137,24 @@ export interface DrizzleMysqlOutboxOptions {
|
|
|
125
137
|
*/
|
|
126
138
|
now?: () => Date;
|
|
127
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Create idempotent SQL statements for the Drizzle MySQL audit log table.
|
|
142
|
+
*
|
|
143
|
+
* Run these during migrations or local setup before using
|
|
144
|
+
* `createDrizzleMysqlAuditLogPort(...)`.
|
|
145
|
+
*
|
|
146
|
+
* Indexes are declared inline because MySQL has no
|
|
147
|
+
* `CREATE INDEX IF NOT EXISTS`; the whole shape stays idempotent under
|
|
148
|
+
* `CREATE TABLE IF NOT EXISTS`.
|
|
149
|
+
*/
|
|
150
|
+
export declare function createDrizzleMysqlAuditLogSetupStatements(options?: DrizzleMysqlAuditLogOptions): readonly string[];
|
|
151
|
+
/**
|
|
152
|
+
* Create a Beignet audit log port backed by a Drizzle MySQL database.
|
|
153
|
+
*
|
|
154
|
+
* The port accepts both the root Drizzle database and transaction clients, so
|
|
155
|
+
* applications can rebuild audit logging inside Unit of Work transaction ports.
|
|
156
|
+
*/
|
|
157
|
+
export declare function createDrizzleMysqlAuditLogPort<TSchema extends Record<string, unknown>>(db: DrizzleMysqlDatabase<TSchema>, adapterOptions?: DrizzleMysqlAuditLogOptions): AuditLogPort;
|
|
128
158
|
/**
|
|
129
159
|
* Create idempotent SQL statements for the Drizzle MySQL outbox table.
|
|
130
160
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mysql/index.js
CHANGED
|
@@ -32,6 +32,7 @@ import { sql } from "drizzle-orm";
|
|
|
32
32
|
import { drizzle } from "drizzle-orm/mysql2";
|
|
33
33
|
import * as mysql from "mysql2/promise";
|
|
34
34
|
import { z } from "zod";
|
|
35
|
+
import { createAuditLogInsertQuery, createAuditLogSqlRow, } from "../shared/audit-core.js";
|
|
35
36
|
import { dbHealthError, dbHealthOk } from "../shared/health.js";
|
|
36
37
|
import { createIdempotencyPortCore, formatIdempotencyMutationErrorMessage, } from "../shared/idempotency-core.js";
|
|
37
38
|
import { quoteIdentifier } from "../shared/identifiers.js";
|
|
@@ -155,6 +156,64 @@ function createMysqlExecutor(db, table) {
|
|
|
155
156
|
},
|
|
156
157
|
};
|
|
157
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Create idempotent SQL statements for the Drizzle MySQL audit log table.
|
|
161
|
+
*
|
|
162
|
+
* Run these during migrations or local setup before using
|
|
163
|
+
* `createDrizzleMysqlAuditLogPort(...)`.
|
|
164
|
+
*
|
|
165
|
+
* Indexes are declared inline because MySQL has no
|
|
166
|
+
* `CREATE INDEX IF NOT EXISTS`; the whole shape stays idempotent under
|
|
167
|
+
* `CREATE TABLE IF NOT EXISTS`.
|
|
168
|
+
*/
|
|
169
|
+
export function createDrizzleMysqlAuditLogSetupStatements(options = {}) {
|
|
170
|
+
const tableName = options.tableName ?? "audit_log";
|
|
171
|
+
const table = quoteIdentifier(tableName, "`");
|
|
172
|
+
const indexPrefix = tableName.replaceAll(/[^A-Za-z0-9_]/g, "_");
|
|
173
|
+
return [
|
|
174
|
+
`CREATE TABLE IF NOT EXISTS ${table} (
|
|
175
|
+
id varchar(255) NOT NULL PRIMARY KEY,
|
|
176
|
+
action varchar(255) NOT NULL,
|
|
177
|
+
actor_type varchar(32) NOT NULL,
|
|
178
|
+
actor_id varchar(255),
|
|
179
|
+
actor_display_name varchar(255),
|
|
180
|
+
tenant_id varchar(255),
|
|
181
|
+
tenant_slug varchar(255),
|
|
182
|
+
resource_type varchar(255),
|
|
183
|
+
resource_id varchar(255),
|
|
184
|
+
resource_name varchar(255),
|
|
185
|
+
outcome varchar(16) NOT NULL DEFAULT 'success',
|
|
186
|
+
request_id varchar(255),
|
|
187
|
+
trace_id varchar(255),
|
|
188
|
+
message longtext,
|
|
189
|
+
metadata longtext,
|
|
190
|
+
actor_metadata longtext,
|
|
191
|
+
tenant_metadata longtext,
|
|
192
|
+
resource_metadata longtext,
|
|
193
|
+
occurred_at varchar(32) NOT NULL,
|
|
194
|
+
INDEX ${quoteIdentifier(`${indexPrefix}_action_idx`, "`")} (action),
|
|
195
|
+
INDEX ${quoteIdentifier(`${indexPrefix}_actor_idx`, "`")} (actor_type, actor_id),
|
|
196
|
+
INDEX ${quoteIdentifier(`${indexPrefix}_occurred_at_idx`, "`")} (occurred_at),
|
|
197
|
+
INDEX ${quoteIdentifier(`${indexPrefix}_request_idx`, "`")} (request_id),
|
|
198
|
+
INDEX ${quoteIdentifier(`${indexPrefix}_resource_idx`, "`")} (resource_type, resource_id),
|
|
199
|
+
INDEX ${quoteIdentifier(`${indexPrefix}_tenant_idx`, "`")} (tenant_id)
|
|
200
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin`,
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Create a Beignet audit log port backed by a Drizzle MySQL database.
|
|
205
|
+
*
|
|
206
|
+
* The port accepts both the root Drizzle database and transaction clients, so
|
|
207
|
+
* applications can rebuild audit logging inside Unit of Work transaction ports.
|
|
208
|
+
*/
|
|
209
|
+
export function createDrizzleMysqlAuditLogPort(db, adapterOptions = {}) {
|
|
210
|
+
const table = sql.raw(quoteIdentifier(adapterOptions.tableName ?? "audit_log", "`"));
|
|
211
|
+
return {
|
|
212
|
+
async record(input) {
|
|
213
|
+
await db.execute(createAuditLogInsertQuery(table, createAuditLogSqlRow(input, adapterOptions)));
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
158
217
|
/**
|
|
159
218
|
* Create idempotent SQL statements for the Drizzle MySQL outbox table.
|
|
160
219
|
*
|
package/dist/mysql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"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"}
|
package/dist/postgres/index.d.ts
CHANGED
|
@@ -28,12 +28,13 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import type { IdempotencyPort } from "@beignet/core/idempotency";
|
|
30
30
|
import type { OutboxPort } from "@beignet/core/outbox";
|
|
31
|
-
import { type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
|
|
31
|
+
import { type AuditLogPort, type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
|
|
32
32
|
import { type ExtractTablesWithRelations } from "drizzle-orm";
|
|
33
33
|
import { type NodePgDatabase } from "drizzle-orm/node-postgres";
|
|
34
34
|
import { type PgDatabase, type PgQueryResultHKT, PgTransaction, type PgTransactionConfig } from "drizzle-orm/pg-core";
|
|
35
35
|
import { type Pool, type PoolConfig } from "pg";
|
|
36
36
|
import { z } from "zod";
|
|
37
|
+
import { type DrizzleAuditLogCoreOptions } from "../shared/audit-core.js";
|
|
37
38
|
import { type DbHealth } from "../shared/health.js";
|
|
38
39
|
/**
|
|
39
40
|
* Typed database port interface.
|
|
@@ -111,6 +112,31 @@ export interface DrizzlePostgresUnitOfWorkOptions<TSchema extends Record<string,
|
|
|
111
112
|
* decides which transaction-scoped ports to create.
|
|
112
113
|
*/
|
|
113
114
|
export declare function createDrizzlePostgresUnitOfWork<TSchema extends Record<string, unknown>, TxPorts>(options: DrizzlePostgresUnitOfWorkOptions<TSchema, TxPorts>): UnitOfWorkPort<TxPorts>;
|
|
115
|
+
/**
|
|
116
|
+
* Options for a Drizzle Postgres-backed audit log port.
|
|
117
|
+
*/
|
|
118
|
+
export interface DrizzlePostgresAuditLogOptions extends DrizzleAuditLogCoreOptions {
|
|
119
|
+
/**
|
|
120
|
+
* Table that stores audit log entries.
|
|
121
|
+
*
|
|
122
|
+
* Default: "audit_log".
|
|
123
|
+
*/
|
|
124
|
+
tableName?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create idempotent SQL statements for the Drizzle Postgres audit log table.
|
|
128
|
+
*
|
|
129
|
+
* Run these during migrations or local setup before using
|
|
130
|
+
* `createDrizzlePostgresAuditLogPort(...)`.
|
|
131
|
+
*/
|
|
132
|
+
export declare function createDrizzlePostgresAuditLogSetupStatements(options?: DrizzlePostgresAuditLogOptions): readonly string[];
|
|
133
|
+
/**
|
|
134
|
+
* Create a Beignet audit log port backed by a Drizzle Postgres database.
|
|
135
|
+
*
|
|
136
|
+
* The port accepts both the root Drizzle database and transaction clients, so
|
|
137
|
+
* applications can rebuild audit logging inside Unit of Work transaction ports.
|
|
138
|
+
*/
|
|
139
|
+
export declare function createDrizzlePostgresAuditLogPort<TSchema extends Record<string, unknown>>(db: DrizzlePostgresDatabase<TSchema>, adapterOptions?: DrizzlePostgresAuditLogOptions): AuditLogPort;
|
|
114
140
|
/**
|
|
115
141
|
* Options for a Drizzle Postgres-backed outbox port.
|
|
116
142
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"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"}
|
package/dist/postgres/index.js
CHANGED
|
@@ -33,6 +33,7 @@ import { drizzle } from "drizzle-orm/node-postgres";
|
|
|
33
33
|
import { PgTransaction, } from "drizzle-orm/pg-core";
|
|
34
34
|
import pg from "pg";
|
|
35
35
|
import { z } from "zod";
|
|
36
|
+
import { createAuditLogInsertQuery, createAuditLogSqlRow, } from "../shared/audit-core.js";
|
|
36
37
|
import { dbHealthError, dbHealthOk } from "../shared/health.js";
|
|
37
38
|
import { createIdempotencyPortCore, formatIdempotencyMutationErrorMessage, } from "../shared/idempotency-core.js";
|
|
38
39
|
import { quoteIdentifier } from "../shared/identifiers.js";
|
|
@@ -69,6 +70,60 @@ export function createDrizzlePostgresUnitOfWork(options) {
|
|
|
69
70
|
},
|
|
70
71
|
};
|
|
71
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Create idempotent SQL statements for the Drizzle Postgres audit log table.
|
|
75
|
+
*
|
|
76
|
+
* Run these during migrations or local setup before using
|
|
77
|
+
* `createDrizzlePostgresAuditLogPort(...)`.
|
|
78
|
+
*/
|
|
79
|
+
export function createDrizzlePostgresAuditLogSetupStatements(options = {}) {
|
|
80
|
+
const tableName = options.tableName ?? "audit_log";
|
|
81
|
+
const table = quoteIdentifier(tableName, '"');
|
|
82
|
+
const indexPrefix = tableName.replaceAll(/[^A-Za-z0-9_]/g, "_");
|
|
83
|
+
return [
|
|
84
|
+
`CREATE TABLE IF NOT EXISTS ${table} (
|
|
85
|
+
id text PRIMARY KEY NOT NULL,
|
|
86
|
+
action text NOT NULL,
|
|
87
|
+
actor_type text NOT NULL,
|
|
88
|
+
actor_id text,
|
|
89
|
+
actor_display_name text,
|
|
90
|
+
tenant_id text,
|
|
91
|
+
tenant_slug text,
|
|
92
|
+
resource_type text,
|
|
93
|
+
resource_id text,
|
|
94
|
+
resource_name text,
|
|
95
|
+
outcome text DEFAULT 'success' NOT NULL,
|
|
96
|
+
request_id text,
|
|
97
|
+
trace_id text,
|
|
98
|
+
message text,
|
|
99
|
+
metadata text,
|
|
100
|
+
actor_metadata text,
|
|
101
|
+
tenant_metadata text,
|
|
102
|
+
resource_metadata text,
|
|
103
|
+
occurred_at text NOT NULL
|
|
104
|
+
)`,
|
|
105
|
+
`CREATE INDEX IF NOT EXISTS ${quoteIdentifier(`${indexPrefix}_action_idx`, '"')} ON ${table} (action)`,
|
|
106
|
+
`CREATE INDEX IF NOT EXISTS ${quoteIdentifier(`${indexPrefix}_actor_idx`, '"')} ON ${table} (actor_type, actor_id)`,
|
|
107
|
+
`CREATE INDEX IF NOT EXISTS ${quoteIdentifier(`${indexPrefix}_occurred_at_idx`, '"')} ON ${table} (occurred_at)`,
|
|
108
|
+
`CREATE INDEX IF NOT EXISTS ${quoteIdentifier(`${indexPrefix}_request_idx`, '"')} ON ${table} (request_id)`,
|
|
109
|
+
`CREATE INDEX IF NOT EXISTS ${quoteIdentifier(`${indexPrefix}_resource_idx`, '"')} ON ${table} (resource_type, resource_id)`,
|
|
110
|
+
`CREATE INDEX IF NOT EXISTS ${quoteIdentifier(`${indexPrefix}_tenant_idx`, '"')} ON ${table} (tenant_id)`,
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create a Beignet audit log port backed by a Drizzle Postgres database.
|
|
115
|
+
*
|
|
116
|
+
* The port accepts both the root Drizzle database and transaction clients, so
|
|
117
|
+
* applications can rebuild audit logging inside Unit of Work transaction ports.
|
|
118
|
+
*/
|
|
119
|
+
export function createDrizzlePostgresAuditLogPort(db, adapterOptions = {}) {
|
|
120
|
+
const table = sql.raw(quoteIdentifier(adapterOptions.tableName ?? "audit_log", '"'));
|
|
121
|
+
return {
|
|
122
|
+
async record(input) {
|
|
123
|
+
await db.execute(createAuditLogInsertQuery(table, createAuditLogSqlRow(input, adapterOptions)));
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
72
127
|
function readRowsAffected(result) {
|
|
73
128
|
const { rowCount, affectedRows } = result;
|
|
74
129
|
if (typeof rowCount === "number") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAGL,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA6C,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAuB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAGL,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAkC,MAAM,IAAI,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiB,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,qCAAqC,GAEtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;AA+DlC,KAAK,UAAU,mBAAmB,CAAC,IAAU;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAoCD;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAI7C,OAA2D;IAE3D,OAAO;QACL,KAAK,CAAC,WAAW,CACf,IAAyC;YAEzC,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvD,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE9B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAeD;;;;;GAKG;AACH,MAAM,UAAU,4CAA4C,CAC1D,UAA0C,EAAE;IAE5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;;;;;;;;;MAoBjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,WAAW;QACtG,8BAA8B,eAAe,CAAC,GAAG,WAAW,YAAY,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;QACnH,8BAA8B,eAAe,CAAC,GAAG,WAAW,kBAAkB,EAAE,GAAG,CAAC,OAAO,KAAK,gBAAgB;QAChH,8BAA8B,eAAe,CAAC,GAAG,WAAW,cAAc,EAAE,GAAG,CAAC,OAAO,KAAK,eAAe;QAC3G,8BAA8B,eAAe,CAAC,GAAG,WAAW,eAAe,EAAE,GAAG,CAAC,OAAO,KAAK,+BAA+B;QAC5H,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,cAAc;KAC1G,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAG/C,EAAoC,EACpC,iBAAiD,EAAE;IAEnD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,WAAW,EAAE,GAAG,CAAC,CAC9D,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,EAAE,CAAC,OAAO,CACd,yBAAyB,CACvB,KAAK,EACL,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAC5C,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAmBD,SAAS,gBAAgB,CAAC,MAAe;IACvC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAGlC,CAAC;IACF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,MAAe;IAC/B,MAAM,IAAI,GAAI,MAA+C,CAAC,IAAI,CAAC;IACnE,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAaD,SAAS,sBAAsB,CAC7B,EAAoC,EACpC,KAAU;IAEV,OAAO;QACL,KAAK;QACL,sEAAsE;QACtE,sCAAsC;QACtC,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACnD,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;QACpC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,uCAAuC,CAAC;QAEtE,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,eAAe,CAAC,EAAE;YAChB,sEAAsE;YACtE,yCAAyC;YACzC,IAAI,EAAE,YAAY,aAAa,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,aAAa,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAChE,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAC3B,EAAE,CACA,sBAAsB,CACpB,EAAsC,EACtC,KAAK,CACN,CACF,CACF,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0CAA0C,CACxD,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC;IACzD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;;;;;MAgBjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,gBAAgB,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;QACvH,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;KACrH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAG7C,EAAoC,EACpC,iBAA+C,EAAE;IAEjD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,iBAAiB,EAAE,GAAG,CAAC,CACpE,CAAC;IACF,MAAM,QAAQ,GAAsB,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,OAAO,oBAAoB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE,CAAC;AAmBD;;;;;;;GAOG;AACH,MAAM,OAAO,uCAAwC,SAAQ,KAAK;IACvD,MAAM,CAAsB;IAC5B,SAAS,CAAS;IAClB,GAAG,CAAS;IACZ,QAAQ,CAAS;IAE1B,YAAY,IAKX;QACC,KAAK,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,yCAAyC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,+CAA+C,CAC7D,UAA6C,EAAE;IAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;MAYjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,0CAA0C;QACrI,8BAA8B,eAAe,CAAC,GAAG,WAAW,cAAc,EAAE,GAAG,CAAC,OAAO,KAAK,eAAe;KAC5G,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAGlD,EAAoC,EACpC,iBAAoD,EAAE;IAEtD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,qBAAqB,EAAE,GAAG,CAAC,CACxE,CAAC;IACF,MAAM,QAAQ,GAA2B,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE3E,OAAO,yBAAyB,CAC9B,QAAQ,EACR,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,EAC3B,uCAAuC,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,aAAa,EAAE,eAAe,CAAU,CAAC;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;;OAGG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CACN,wBAAwB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACnE;QACE,OAAO,EACL,+GAA+G;KAClH,CACF;CACJ,CAAC,CAAC;AAqCH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,6BAA6B,CAG3C,OAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO,cAAc,CAAC;QACpB,IAAI,EAAE,kBAAkB;QAExB,MAAM,EAAE;YACN,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,WAAW;SACvB;QAED,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;YACJ,CAAC;YAED,mEAAmE;YACnE,MAAM,IAAI,GAAS,IAAI,EAAE,CAAC,IAAI,CAAC;gBAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM;gBAC/B,GAAG,OAAO,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,6BAA6B,CAAC,KAAK,EAAE;gBAC3D,YAAY,EAAE,kBAAkB;gBAChC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAE9D,mCAAmC;YACnC,MAAM,EAAE,GAA4B,MAAM;gBACxC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAE9B,0BAA0B;YAC1B,MAAM,MAAM,GAAoB;gBAC9B,OAAO,EAAE,EAAE;gBACX,EAAE;gBACF,IAAI;gBACJ,WAAW,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;aAC7C,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAuC;gBAClE,KAAK,CAAC,IAAI;oBACR,uCAAuC;oBACvC,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,yDAAyD;wBACzD,OAAO,CAAC,KAAK,CACX,8DAA8D,EAC9D,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ActivityActorType, type AuditLogEntry, type AuditLogEntryInput, type AuditLogOptions } from "@beignet/core/ports";
|
|
2
|
+
import { type SQL } from "drizzle-orm";
|
|
3
|
+
export interface DrizzleAuditLogCoreOptions extends AuditLogOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Optional ID factory for deterministic tests or runtimes without
|
|
6
|
+
* `globalThis.crypto.randomUUID()`.
|
|
7
|
+
*/
|
|
8
|
+
createId?: () => string;
|
|
9
|
+
}
|
|
10
|
+
export type AuditLogSqlRow = {
|
|
11
|
+
id: string;
|
|
12
|
+
action: string;
|
|
13
|
+
actorType: ActivityActorType;
|
|
14
|
+
actorId: string | null;
|
|
15
|
+
actorDisplayName: string | null;
|
|
16
|
+
tenantId: string | null;
|
|
17
|
+
tenantSlug: string | null;
|
|
18
|
+
resourceType: string | null;
|
|
19
|
+
resourceId: string | null;
|
|
20
|
+
resourceName: string | null;
|
|
21
|
+
outcome: AuditLogEntry["outcome"];
|
|
22
|
+
requestId: string | null;
|
|
23
|
+
traceId: string | null;
|
|
24
|
+
message: string | null;
|
|
25
|
+
metadata: string | null;
|
|
26
|
+
actorMetadata: string | null;
|
|
27
|
+
tenantMetadata: string | null;
|
|
28
|
+
resourceMetadata: string | null;
|
|
29
|
+
occurredAt: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function createAuditLogSqlRow(input: AuditLogEntryInput, options?: DrizzleAuditLogCoreOptions): AuditLogSqlRow;
|
|
32
|
+
export declare function createAuditLogInsertQuery(table: SQL, row: AuditLogSqlRow): SQL;
|
|
33
|
+
//# sourceMappingURL=audit-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-core.d.ts","sourceRoot":"","sources":["../../src/shared/audit-core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAGrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,0BAA+B,GACvC,cAAc,CA4BhB;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,cAAc,GAClB,GAAG,CA4CL"}
|