@payloadcms/db-postgres 0.3.1 → 0.5.0

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/types.d.ts CHANGED
@@ -1,11 +1,13 @@
1
- import type { ColumnBaseConfig, ColumnDataType, ExtractTablesWithRelations, Relation, Relations } from 'drizzle-orm';
1
+ import type { ColumnBaseConfig, ColumnDataType, DrizzleConfig, ExtractTablesWithRelations, Relation, Relations } from 'drizzle-orm';
2
2
  import type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres';
3
3
  import type { PgColumn, PgEnum, PgTableWithColumns, PgTransaction } from 'drizzle-orm/pg-core';
4
4
  import type { Payload } from 'payload';
5
5
  import type { BaseDatabaseAdapter } from 'payload/database';
6
+ import type { PayloadRequest } from 'payload/types';
6
7
  import type { Pool, PoolConfig } from 'pg';
7
8
  export type DrizzleDB = NodePgDatabase<Record<string, unknown>>;
8
9
  export type Args = {
10
+ logger?: DrizzleConfig['logger'];
9
11
  migrationDir?: string;
10
12
  pool: PoolConfig;
11
13
  push?: boolean;
@@ -26,6 +28,12 @@ export type DrizzleTransaction = PgTransaction<NodePgQueryResultHKT, Record<stri
26
28
  export type PostgresAdapter = BaseDatabaseAdapter & {
27
29
  drizzle: DrizzleDB;
28
30
  enums: Record<string, GenericEnum>;
31
+ /**
32
+ * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name
33
+ * Used for returning properly formed errors from unique fields
34
+ */
35
+ fieldConstraints: Record<string, Record<string, string>>;
36
+ logger: DrizzleConfig['logger'];
29
37
  pool: Pool;
30
38
  poolOptions: Args['pool'];
31
39
  push: boolean;
@@ -39,25 +47,23 @@ export type PostgresAdapter = BaseDatabaseAdapter & {
39
47
  };
40
48
  };
41
49
  tables: Record<string, GenericTable>;
42
- /**
43
- * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name
44
- * Used for returning properly formed errors from unique fields
45
- */
46
- fieldConstraints: Record<string, Record<string, string>>;
47
50
  };
48
51
  export type PostgresAdapterResult = (args: {
49
52
  payload: Payload;
50
53
  }) => PostgresAdapter;
51
54
  export type MigrateUpArgs = {
52
55
  payload: Payload;
56
+ req?: Partial<PayloadRequest>;
53
57
  };
54
58
  export type MigrateDownArgs = {
55
59
  payload: Payload;
60
+ req?: Partial<PayloadRequest>;
56
61
  };
57
62
  declare module 'payload' {
58
63
  interface DatabaseAdapter extends Omit<Args, 'migrationDir' | 'pool'>, BaseDatabaseAdapter {
59
64
  drizzle: DrizzleDB;
60
65
  enums: Record<string, GenericEnum>;
66
+ fieldConstraints: Record<string, Record<string, string>>;
61
67
  pool: Pool;
62
68
  push: boolean;
63
69
  relations: Record<string, GenericRelation>;
@@ -70,7 +76,6 @@ declare module 'payload' {
70
76
  };
71
77
  };
72
78
  tables: Record<string, GenericTable>;
73
- fieldConstraints: Record<string, Record<string, string>>;
74
79
  }
75
80
  }
76
81
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-postgres",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "The officially supported Postgres database adapter for Payload",
5
5
  "repository": "https://github.com/payloadcms/payload",
6
6
  "license": "MIT",
@@ -15,8 +15,8 @@
15
15
  "dependencies": {
16
16
  "@libsql/client": "^0.3.1",
17
17
  "console-table-printer": "2.11.2",
18
- "drizzle-kit": "0.19.13-e99bac1",
19
- "drizzle-orm": "0.28.5",
18
+ "drizzle-kit": "0.20.5-608ae62",
19
+ "drizzle-orm": "0.29.3",
20
20
  "pg": "8.11.3",
21
21
  "prompts": "2.4.2",
22
22
  "to-snake-case": "1.0.0",
@@ -25,8 +25,8 @@
25
25
  "devDependencies": {
26
26
  "@types/pg": "8.10.2",
27
27
  "@types/to-snake-case": "1.0.0",
28
- "payload": "2.8.0",
29
- "@payloadcms/eslint-config": "1.1.1"
28
+ "@payloadcms/eslint-config": "1.1.1",
29
+ "payload": "2.9.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "payload": "^2.0.0"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=reference.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":""}
package/dist/reference.js DELETED
@@ -1,77 +0,0 @@
1
- // type GenerateMigration = (before: DrizzleSnapshotJSON, after: DrizzleSnapshotJSON) => string[]
2
- // type GenerateDrizzleJSON = (schema: DrizzleSchemaExports) => DrizzleSnapshotJSON
3
- // type PushDiff = (schema: DrizzleSchemaExports) => Promise<{ warnings: string[], apply: () => Promise<void> }>
4
- // drizzle-kit@utils
5
- "use strict";
6
- Object.defineProperty(exports, "__esModule", {
7
- value: true
8
- });
9
- const _nodepostgres = require("drizzle-orm/node-postgres");
10
- const _pg = require("pg");
11
- function _getRequireWildcardCache(nodeInterop) {
12
- if (typeof WeakMap !== "function") return null;
13
- var cacheBabelInterop = new WeakMap();
14
- var cacheNodeInterop = new WeakMap();
15
- return (_getRequireWildcardCache = function(nodeInterop) {
16
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
17
- })(nodeInterop);
18
- }
19
- function _interop_require_wildcard(obj, nodeInterop) {
20
- if (!nodeInterop && obj && obj.__esModule) {
21
- return obj;
22
- }
23
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
24
- return {
25
- default: obj
26
- };
27
- }
28
- var cache = _getRequireWildcardCache(nodeInterop);
29
- if (cache && cache.has(obj)) {
30
- return cache.get(obj);
31
- }
32
- var newObj = {};
33
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
34
- for(var key in obj){
35
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
36
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
37
- if (desc && (desc.get || desc.set)) {
38
- Object.defineProperty(newObj, key, desc);
39
- } else {
40
- newObj[key] = obj[key];
41
- }
42
- }
43
- }
44
- newObj.default = obj;
45
- if (cache) {
46
- cache.set(obj, newObj);
47
- }
48
- return newObj;
49
- }
50
- async function generateUsage() {
51
- const { generateDrizzleJson, generateMigration } = require('drizzle-kit/utils');
52
- // @ts-expect-error Just TypeScript being broken // TODO: Open TypeScript issue
53
- const schema = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./data/users")));
54
- // @ts-expect-error Just TypeScript being broken // TODO: Open TypeScript issue
55
- const schemaAfter = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./data/users-after")));
56
- const drizzleJsonBefore = generateDrizzleJson(schema);
57
- const drizzleJsonAfter = generateDrizzleJson(schemaAfter);
58
- const sqlStatements = await generateMigration(drizzleJsonBefore, drizzleJsonAfter);
59
- console.log(sqlStatements);
60
- }
61
- async function pushUsage() {
62
- const { pushSchema } = require('drizzle-kit/utils');
63
- // @ts-expect-error Just TypeScript being broken // TODO: Open TypeScript issue
64
- const schemaAfter = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./data/users-after")));
65
- const db = (0, _nodepostgres.drizzle)(new _pg.Pool({
66
- connectionString: ''
67
- }));
68
- const response = await pushSchema(schemaAfter, db);
69
- console.log('\n');
70
- console.log('hasDataLoss: ', response.hasDataLoss);
71
- console.log('warnings: ', response.warnings);
72
- console.log('statements: ', response.statementsToExecute);
73
- await response.apply();
74
- process.exit(0);
75
- }
76
-
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWZlcmVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdHlwZSBHZW5lcmF0ZU1pZ3JhdGlvbiA9IChiZWZvcmU6IERyaXp6bGVTbmFwc2hvdEpTT04sIGFmdGVyOiBEcml6emxlU25hcHNob3RKU09OKSA9PiBzdHJpbmdbXVxuXG4vLyB0eXBlIEdlbmVyYXRlRHJpenpsZUpTT04gPSAoc2NoZW1hOiBEcml6emxlU2NoZW1hRXhwb3J0cykgPT4gRHJpenpsZVNuYXBzaG90SlNPTlxuXG4vLyB0eXBlIFB1c2hEaWZmID0gKHNjaGVtYTogRHJpenpsZVNjaGVtYUV4cG9ydHMpID0+IFByb21pc2U8eyB3YXJuaW5nczogc3RyaW5nW10sIGFwcGx5OiAoKSA9PiBQcm9taXNlPHZvaWQ+IH0+XG5cbi8vIGRyaXp6bGUta2l0QHV0aWxzXG5cbmltcG9ydCB7IGRyaXp6bGUgfSBmcm9tICdkcml6emxlLW9ybS9ub2RlLXBvc3RncmVzJ1xuaW1wb3J0IHsgUG9vbCB9IGZyb20gJ3BnJ1xuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVVzYWdlKCkge1xuICBjb25zdCB7IGdlbmVyYXRlRHJpenpsZUpzb24sIGdlbmVyYXRlTWlncmF0aW9uIH0gPSByZXF1aXJlKCdkcml6emxlLWtpdC91dGlscycpXG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBKdXN0IFR5cGVTY3JpcHQgYmVpbmcgYnJva2VuIC8vIFRPRE86IE9wZW4gVHlwZVNjcmlwdCBpc3N1ZVxuICBjb25zdCBzY2hlbWEgPSBhd2FpdCBpbXBvcnQoJy4vZGF0YS91c2VycycpXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgSnVzdCBUeXBlU2NyaXB0IGJlaW5nIGJyb2tlbiAvLyBUT0RPOiBPcGVuIFR5cGVTY3JpcHQgaXNzdWVcbiAgY29uc3Qgc2NoZW1hQWZ0ZXIgPSBhd2FpdCBpbXBvcnQoJy4vZGF0YS91c2Vycy1hZnRlcicpXG5cbiAgY29uc3QgZHJpenpsZUpzb25CZWZvcmUgPSBnZW5lcmF0ZURyaXp6bGVKc29uKHNjaGVtYSlcbiAgY29uc3QgZHJpenpsZUpzb25BZnRlciA9IGdlbmVyYXRlRHJpenpsZUpzb24oc2NoZW1hQWZ0ZXIpXG5cbiAgY29uc3Qgc3FsU3RhdGVtZW50cyA9IGF3YWl0IGdlbmVyYXRlTWlncmF0aW9uKGRyaXp6bGVKc29uQmVmb3JlLCBkcml6emxlSnNvbkFmdGVyKVxuXG4gIGNvbnNvbGUubG9nKHNxbFN0YXRlbWVudHMpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHB1c2hVc2FnZSgpIHtcbiAgY29uc3QgeyBwdXNoU2NoZW1hIH0gPSByZXF1aXJlKCdkcml6emxlLWtpdC91dGlscycpXG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBKdXN0IFR5cGVTY3JpcHQgYmVpbmcgYnJva2VuIC8vIFRPRE86IE9wZW4gVHlwZVNjcmlwdCBpc3N1ZVxuICBjb25zdCBzY2hlbWFBZnRlciA9IGF3YWl0IGltcG9ydCgnLi9kYXRhL3VzZXJzLWFmdGVyJylcblxuICBjb25zdCBkYiA9IGRyaXp6bGUobmV3IFBvb2woeyBjb25uZWN0aW9uU3RyaW5nOiAnJyB9KSlcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHB1c2hTY2hlbWEoc2NoZW1hQWZ0ZXIsIGRiKVxuXG4gIGNvbnNvbGUubG9nKCdcXG4nKVxuICBjb25zb2xlLmxvZygnaGFzRGF0YUxvc3M6ICcsIHJlc3BvbnNlLmhhc0RhdGFMb3NzKVxuICBjb25zb2xlLmxvZygnd2FybmluZ3M6ICcsIHJlc3BvbnNlLndhcm5pbmdzKVxuICBjb25zb2xlLmxvZygnc3RhdGVtZW50czogJywgcmVzcG9uc2Uuc3RhdGVtZW50c1RvRXhlY3V0ZSlcblxuICBhd2FpdCByZXNwb25zZS5hcHBseSgpXG5cbiAgcHJvY2Vzcy5leGl0KDApXG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVVc2FnZSIsImdlbmVyYXRlRHJpenpsZUpzb24iLCJnZW5lcmF0ZU1pZ3JhdGlvbiIsInJlcXVpcmUiLCJzY2hlbWEiLCJzY2hlbWFBZnRlciIsImRyaXp6bGVKc29uQmVmb3JlIiwiZHJpenpsZUpzb25BZnRlciIsInNxbFN0YXRlbWVudHMiLCJjb25zb2xlIiwibG9nIiwicHVzaFVzYWdlIiwicHVzaFNjaGVtYSIsImRiIiwiZHJpenpsZSIsIlBvb2wiLCJjb25uZWN0aW9uU3RyaW5nIiwicmVzcG9uc2UiLCJoYXNEYXRhTG9zcyIsIndhcm5pbmdzIiwic3RhdGVtZW50c1RvRXhlY3V0ZSIsImFwcGx5IiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiJBQUFBLGlHQUFpRztBQUVqRyxtRkFBbUY7QUFFbkYsZ0hBQWdIO0FBRWhILG9CQUFvQjs7Ozs7OEJBRUk7b0JBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckIsZUFBZUE7SUFDYixNQUFNLEVBQUVDLG1CQUFtQixFQUFFQyxpQkFBaUIsRUFBRSxHQUFHQyxRQUFRO0lBRTNELCtFQUErRTtJQUMvRSxNQUFNQyxTQUFTLE1BQU0sbUVBQUEsUUFBTztJQUM1QiwrRUFBK0U7SUFDL0UsTUFBTUMsY0FBYyxNQUFNLG1FQUFBLFFBQU87SUFFakMsTUFBTUMsb0JBQW9CTCxvQkFBb0JHO0lBQzlDLE1BQU1HLG1CQUFtQk4sb0JBQW9CSTtJQUU3QyxNQUFNRyxnQkFBZ0IsTUFBTU4sa0JBQWtCSSxtQkFBbUJDO0lBRWpFRSxRQUFRQyxHQUFHLENBQUNGO0FBQ2Q7QUFFQSxlQUFlRztJQUNiLE1BQU0sRUFBRUMsVUFBVSxFQUFFLEdBQUdULFFBQVE7SUFFL0IsK0VBQStFO0lBQy9FLE1BQU1FLGNBQWMsTUFBTSxtRUFBQSxRQUFPO0lBRWpDLE1BQU1RLEtBQUtDLElBQUFBLHFCQUFPLEVBQUMsSUFBSUMsUUFBSSxDQUFDO1FBQUVDLGtCQUFrQjtJQUFHO0lBRW5ELE1BQU1DLFdBQVcsTUFBTUwsV0FBV1AsYUFBYVE7SUFFL0NKLFFBQVFDLEdBQUcsQ0FBQztJQUNaRCxRQUFRQyxHQUFHLENBQUMsaUJBQWlCTyxTQUFTQyxXQUFXO0lBQ2pEVCxRQUFRQyxHQUFHLENBQUMsY0FBY08sU0FBU0UsUUFBUTtJQUMzQ1YsUUFBUUMsR0FBRyxDQUFDLGdCQUFnQk8sU0FBU0csbUJBQW1CO0lBRXhELE1BQU1ILFNBQVNJLEtBQUs7SUFFcEJDLFFBQVFDLElBQUksQ0FBQztBQUNmIn0=