@payloadcms/db-postgres 0.3.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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=