@payloadcms/drizzle 3.0.0-canary.294ea5c → 3.0.0-canary.3eda767

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.
Files changed (249) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +1 -1
  3. package/dist/count.js.map +1 -1
  4. package/dist/createGlobalVersion.d.ts +1 -1
  5. package/dist/createGlobalVersion.d.ts.map +1 -1
  6. package/dist/createGlobalVersion.js +6 -2
  7. package/dist/createGlobalVersion.js.map +1 -1
  8. package/dist/createTableName.d.ts.map +1 -1
  9. package/dist/createTableName.js +6 -2
  10. package/dist/createTableName.js.map +1 -1
  11. package/dist/createVersion.d.ts +1 -1
  12. package/dist/createVersion.d.ts.map +1 -1
  13. package/dist/createVersion.js +21 -14
  14. package/dist/createVersion.js.map +1 -1
  15. package/dist/deleteOne.d.ts.map +1 -1
  16. package/dist/deleteOne.js +5 -3
  17. package/dist/deleteOne.js.map +1 -1
  18. package/dist/deleteVersions.js +1 -1
  19. package/dist/deleteVersions.js.map +1 -1
  20. package/dist/destroy.d.ts.map +1 -1
  21. package/dist/destroy.js +3 -1
  22. package/dist/destroy.js.map +1 -1
  23. package/dist/exports/postgres.d.ts +1 -0
  24. package/dist/exports/postgres.d.ts.map +1 -1
  25. package/dist/exports/postgres.js +1 -0
  26. package/dist/exports/postgres.js.map +1 -1
  27. package/dist/find/buildFindManyArgs.d.ts +14 -7
  28. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  29. package/dist/find/buildFindManyArgs.js +9 -2
  30. package/dist/find/buildFindManyArgs.js.map +1 -1
  31. package/dist/find/findMany.d.ts +2 -1
  32. package/dist/find/findMany.d.ts.map +1 -1
  33. package/dist/find/findMany.js +11 -7
  34. package/dist/find/findMany.js.map +1 -1
  35. package/dist/find/traverseFields.d.ts +8 -3
  36. package/dist/find/traverseFields.d.ts.map +1 -1
  37. package/dist/find/traverseFields.js +156 -16
  38. package/dist/find/traverseFields.js.map +1 -1
  39. package/dist/find.d.ts.map +1 -1
  40. package/dist/find.js +3 -2
  41. package/dist/find.js.map +1 -1
  42. package/dist/findGlobalVersions.js +2 -2
  43. package/dist/findGlobalVersions.js.map +1 -1
  44. package/dist/findMigrationDir.d.ts.map +1 -1
  45. package/dist/findMigrationDir.js +3 -1
  46. package/dist/findMigrationDir.js.map +1 -1
  47. package/dist/findOne.d.ts +1 -1
  48. package/dist/findOne.d.ts.map +1 -1
  49. package/dist/findOne.js +2 -1
  50. package/dist/findOne.js.map +1 -1
  51. package/dist/findVersions.js +2 -2
  52. package/dist/findVersions.js.map +1 -1
  53. package/dist/index.d.ts +3 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +3 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/migrate.js +1 -0
  58. package/dist/migrate.js.map +1 -1
  59. package/dist/migrateDown.d.ts.map +1 -1
  60. package/dist/migrateDown.js +1 -1
  61. package/dist/migrateDown.js.map +1 -1
  62. package/dist/migrateFresh.d.ts.map +1 -1
  63. package/dist/migrateFresh.js +1 -0
  64. package/dist/migrateFresh.js.map +1 -1
  65. package/dist/migrateRefresh.d.ts.map +1 -1
  66. package/dist/migrateRefresh.js +2 -1
  67. package/dist/migrateRefresh.js.map +1 -1
  68. package/dist/migrateReset.d.ts.map +1 -1
  69. package/dist/migrateReset.js +5 -3
  70. package/dist/migrateReset.js.map +1 -1
  71. package/dist/migrateStatus.js +0 -1
  72. package/dist/migrateStatus.js.map +1 -1
  73. package/dist/postgres/countDistinct.d.ts.map +1 -1
  74. package/dist/postgres/countDistinct.js +2 -3
  75. package/dist/postgres/countDistinct.js.map +1 -1
  76. package/dist/postgres/createDatabase.d.ts +14 -0
  77. package/dist/postgres/createDatabase.d.ts.map +1 -0
  78. package/dist/postgres/createDatabase.js +76 -0
  79. package/dist/postgres/createDatabase.js.map +1 -0
  80. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
  81. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +3 -1
  82. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  83. package/dist/postgres/createMigration.d.ts.map +1 -1
  84. package/dist/postgres/createMigration.js +4 -1
  85. package/dist/postgres/createMigration.js.map +1 -1
  86. package/dist/postgres/defaultSnapshot.d.ts.map +1 -1
  87. package/dist/postgres/defaultSnapshot.js +2 -1
  88. package/dist/postgres/defaultSnapshot.js.map +1 -1
  89. package/dist/postgres/init.d.ts.map +1 -1
  90. package/dist/postgres/init.js +12 -3
  91. package/dist/postgres/init.js.map +1 -1
  92. package/dist/postgres/schema/build.d.ts +12 -2
  93. package/dist/postgres/schema/build.d.ts.map +1 -1
  94. package/dist/postgres/schema/build.js +45 -10
  95. package/dist/postgres/schema/build.js.map +1 -1
  96. package/dist/postgres/schema/createIndex.d.ts +2 -3
  97. package/dist/postgres/schema/createIndex.d.ts.map +1 -1
  98. package/dist/postgres/schema/createIndex.js +5 -3
  99. package/dist/postgres/schema/createIndex.js.map +1 -1
  100. package/dist/postgres/schema/traverseFields.d.ts +9 -2
  101. package/dist/postgres/schema/traverseFields.d.ts.map +1 -1
  102. package/dist/postgres/schema/traverseFields.js +194 -70
  103. package/dist/postgres/schema/traverseFields.js.map +1 -1
  104. package/dist/postgres/schema/withDefault.d.ts.map +1 -1
  105. package/dist/postgres/schema/withDefault.js +3 -1
  106. package/dist/postgres/schema/withDefault.js.map +1 -1
  107. package/dist/postgres/types.d.ts +34 -7
  108. package/dist/postgres/types.d.ts.map +1 -1
  109. package/dist/postgres/types.js.map +1 -1
  110. package/dist/queries/addJoinTable.d.ts +11 -0
  111. package/dist/queries/addJoinTable.d.ts.map +1 -0
  112. package/dist/queries/addJoinTable.js +13 -0
  113. package/dist/queries/addJoinTable.js.map +1 -0
  114. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  115. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  116. package/dist/queries/buildAndOrConditions.js +2 -4
  117. package/dist/queries/buildAndOrConditions.js.map +1 -1
  118. package/dist/queries/buildOrderBy.d.ts +18 -0
  119. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  120. package/dist/queries/buildOrderBy.js +56 -0
  121. package/dist/queries/buildOrderBy.js.map +1 -0
  122. package/dist/queries/buildQuery.d.ts +8 -7
  123. package/dist/queries/buildQuery.d.ts.map +1 -1
  124. package/dist/queries/buildQuery.js +12 -47
  125. package/dist/queries/buildQuery.js.map +1 -1
  126. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  127. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  128. package/dist/queries/getTableColumnFromPath.js +133 -86
  129. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  130. package/dist/queries/operatorMap.d.ts.map +1 -1
  131. package/dist/queries/operatorMap.js.map +1 -1
  132. package/dist/queries/parseParams.d.ts +1 -1
  133. package/dist/queries/parseParams.d.ts.map +1 -1
  134. package/dist/queries/parseParams.js +52 -6
  135. package/dist/queries/parseParams.js.map +1 -1
  136. package/dist/queries/sanitizeQueryValue.d.ts +12 -1
  137. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  138. package/dist/queries/sanitizeQueryValue.js +81 -23
  139. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  140. package/dist/queries/selectDistinct.d.ts +3 -4
  141. package/dist/queries/selectDistinct.d.ts.map +1 -1
  142. package/dist/queries/selectDistinct.js.map +1 -1
  143. package/dist/queryDrafts.d.ts.map +1 -1
  144. package/dist/queryDrafts.js +5 -6
  145. package/dist/queryDrafts.js.map +1 -1
  146. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  147. package/dist/transactions/beginTransaction.js +5 -1
  148. package/dist/transactions/beginTransaction.js.map +1 -1
  149. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  150. package/dist/transactions/commitTransaction.js +3 -1
  151. package/dist/transactions/commitTransaction.js.map +1 -1
  152. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  153. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  154. package/dist/transform/read/hasManyNumber.js +12 -2
  155. package/dist/transform/read/hasManyNumber.js.map +1 -1
  156. package/dist/transform/read/hasManyText.d.ts +2 -1
  157. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  158. package/dist/transform/read/hasManyText.js +12 -2
  159. package/dist/transform/read/hasManyText.js.map +1 -1
  160. package/dist/transform/read/index.d.ts +3 -2
  161. package/dist/transform/read/index.d.ts.map +1 -1
  162. package/dist/transform/read/index.js +3 -2
  163. package/dist/transform/read/index.js.map +1 -1
  164. package/dist/transform/read/relationship.d.ts +2 -1
  165. package/dist/transform/read/relationship.d.ts.map +1 -1
  166. package/dist/transform/read/relationship.js +15 -6
  167. package/dist/transform/read/relationship.js.map +1 -1
  168. package/dist/transform/read/traverseFields.d.ts +10 -2
  169. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  170. package/dist/transform/read/traverseFields.js +170 -56
  171. package/dist/transform/read/traverseFields.js.map +1 -1
  172. package/dist/transform/write/array.d.ts +6 -1
  173. package/dist/transform/write/array.d.ts.map +1 -1
  174. package/dist/transform/write/array.js +7 -3
  175. package/dist/transform/write/array.js.map +1 -1
  176. package/dist/transform/write/blocks.d.ts +8 -3
  177. package/dist/transform/write/blocks.d.ts.map +1 -1
  178. package/dist/transform/write/blocks.js +19 -7
  179. package/dist/transform/write/blocks.js.map +1 -1
  180. package/dist/transform/write/index.d.ts.map +1 -1
  181. package/dist/transform/write/index.js +1 -1
  182. package/dist/transform/write/index.js.map +1 -1
  183. package/dist/transform/write/relationships.d.ts.map +1 -1
  184. package/dist/transform/write/relationships.js +6 -2
  185. package/dist/transform/write/relationships.js.map +1 -1
  186. package/dist/transform/write/selects.d.ts.map +1 -1
  187. package/dist/transform/write/selects.js +1 -1
  188. package/dist/transform/write/selects.js.map +1 -1
  189. package/dist/transform/write/traverseFields.d.ts +6 -1
  190. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  191. package/dist/transform/write/traverseFields.js +58 -19
  192. package/dist/transform/write/traverseFields.js.map +1 -1
  193. package/dist/types.d.ts +2 -1
  194. package/dist/types.d.ts.map +1 -1
  195. package/dist/types.js.map +1 -1
  196. package/dist/update.d.ts.map +1 -1
  197. package/dist/update.js +3 -2
  198. package/dist/update.js.map +1 -1
  199. package/dist/updateGlobalVersion.js +2 -2
  200. package/dist/updateGlobalVersion.js.map +1 -1
  201. package/dist/updateVersion.js +2 -2
  202. package/dist/updateVersion.js.map +1 -1
  203. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  204. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  205. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  206. package/dist/upsertRow/index.d.ts +1 -1
  207. package/dist/upsertRow/index.d.ts.map +1 -1
  208. package/dist/upsertRow/index.js +50 -13
  209. package/dist/upsertRow/index.js.map +1 -1
  210. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  211. package/dist/upsertRow/insertArrays.js +5 -2
  212. package/dist/upsertRow/insertArrays.js.map +1 -1
  213. package/dist/upsertRow/types.d.ts +8 -5
  214. package/dist/upsertRow/types.d.ts.map +1 -1
  215. package/dist/upsertRow/types.js.map +1 -1
  216. package/dist/utilities/buildIndexName.d.ts +7 -0
  217. package/dist/utilities/buildIndexName.d.ts.map +1 -0
  218. package/dist/utilities/buildIndexName.js +14 -0
  219. package/dist/utilities/buildIndexName.js.map +1 -0
  220. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  221. package/dist/utilities/createBlocksMap.js +4 -2
  222. package/dist/utilities/createBlocksMap.js.map +1 -1
  223. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  224. package/dist/utilities/createRelationshipMap.js +3 -1
  225. package/dist/utilities/createRelationshipMap.js.map +1 -1
  226. package/dist/utilities/executeSchemaHooks.d.ts +24 -0
  227. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
  228. package/dist/utilities/executeSchemaHooks.js +21 -0
  229. package/dist/utilities/executeSchemaHooks.js.map +1 -0
  230. package/dist/utilities/extendDrizzleTable.d.ts +19 -0
  231. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
  232. package/dist/utilities/extendDrizzleTable.js +38 -0
  233. package/dist/utilities/extendDrizzleTable.js.map +1 -0
  234. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  235. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  236. package/dist/utilities/getCollectionIdType.js +11 -0
  237. package/dist/utilities/getCollectionIdType.js.map +1 -0
  238. package/dist/utilities/getNameFromDrizzleTable.d.ts +3 -0
  239. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -0
  240. package/dist/utilities/getNameFromDrizzleTable.js +6 -0
  241. package/dist/utilities/getNameFromDrizzleTable.js.map +1 -0
  242. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  243. package/dist/utilities/hasLocalesTable.js +12 -4
  244. package/dist/utilities/hasLocalesTable.js.map +1 -1
  245. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  246. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  247. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  248. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  249. package/package.json +9 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/postgres/schema/traverseFields.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core'\nimport type { Field, TabAsField } from 'payload'\n\nimport { relations } from 'drizzle-orm'\nimport {\n PgNumericBuilder,\n PgUUIDBuilder,\n PgVarcharBuilder,\n boolean,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n text,\n timestamp,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n BaseExtraConfig,\n BasePostgresAdapter,\n GenericColumns,\n IDType,\n RelationMap,\n} from '../types.js'\n\nimport { createTableName } from '../../createTableName.js'\nimport { hasLocalesTable } from '../../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { idToUUID } from './idToUUID.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: BasePostgresAdapter\n columnPrefix?: string\n columns: Record<string, PgColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n localesColumns: Record<string, PgColumnBuilder>\n localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n newTableName: string\n parentTableName: string\n relationsToBuild: RelationMap\n relationships: Set<string>\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: string\n rootTableName: string\n versions: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n}: Args): Result => {\n const throwValidationError = true\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n if (columns.id instanceof PgUUIDBuilder) parentIDColType = 'uuid'\n if (columns.id instanceof PgNumericBuilder) parentIDColType = 'numeric'\n if (columns.id instanceof PgVarcharBuilder) parentIDColType = 'varchar'\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') return\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index) &&\n !['array', 'blocks', 'group', 'point', 'relationship', 'upload'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true)\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n targetIndexes[`${newTableName}_${field.name}Idx`] = createIndex({\n name: fieldName,\n columnName,\n tableName: newTableName,\n unique,\n })\n }\n }\n\n switch (field.type) {\n case 'text': {\n if (field.hasMany) {\n if (field.localized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n if (field.localized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(numeric(columnName), field)\n }\n break\n }\n\n case 'richText':\n case 'json': {\n targetTable[fieldName] = withDefault(jsonb(columnName), field)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n timestamp(columnName, {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n }),\n field,\n )\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n adapter.enums[enumName] = adapter.pgSchema.enum(\n enumName,\n field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]],\n )\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n order: integer('order').notNull(),\n parent: parentIDColumnMap[parentIDColType]('parent_id').notNull(),\n value: adapter.enums[enumName]('value'),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n orderIdx: (cols) => index(`${selectTableName}_order_idx`).on(cols.order),\n parentFk: (cols) =>\n foreignKey({\n name: `${selectTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n parentIdx: (cols) => index(`${selectTableName}_parent_idx`).on(cols.parent),\n }\n\n if (field.localized) {\n baseColumns.locale = adapter.enums.enum__locales('locale').notNull()\n baseExtraConfig.localeIdx = (cols) =>\n index(`${selectTableName}_locale_idx`).on(cols.locale)\n }\n\n if (field.index) {\n baseExtraConfig.value = (cols) => index(`${selectTableName}_value_idx`).on(cols.value)\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull,\n disableUnique,\n fields: [],\n rootTableName,\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // selects have their own localized table, independent of the base table.\n localized: false,\n target: selectTableName,\n })\n\n adapter.relations[`relations_${selectTableName}`] = relations(\n adapter.tables[selectTableName],\n ({ one }) => ({\n parent: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[selectTableName].parent],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }),\n )\n } else {\n targetTable[fieldName] = withDefault(adapter.enums[enumName](fieldName), field)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = withDefault(boolean(columnName), field)\n break\n }\n\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[parentIDColType]('_parent_id').notNull(),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${arrayTableName}_order_idx`).on(cols._order),\n _parentIDFk: (cols) =>\n foreignKey({\n name: `${arrayTableName}_parent_id_fk`,\n columns: [cols['_parentID']],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n _parentIDIdx: (cols) => index(`${arrayTableName}_parent_id_idx`).on(cols._parentID),\n }\n\n if (field.localized && adapter.payload.config.localization) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${arrayTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: arrayTableName,\n versions,\n })\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // arrays have their own localized table, independent of the base table.\n localized: false,\n target: arrayTableName,\n })\n\n adapter.relations[`relations_${arrayTableName}`] = relations(\n adapter.tables[arrayTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[arrayTableName]._parentID],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }\n\n if (hasLocalesTable(field.fields)) {\n result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`], {\n relationName: '_locales',\n })\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const arrayWithLocalized = localized\n ? `${arrayTableName}${adapter.localesSuffix}`\n : arrayTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[arrayWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n\n break\n }\n\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = createTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[rootTableIDColType]('_parent_id').notNull(),\n _path: text('_path').notNull(),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${blockTableName}_order_idx`).on(cols._order),\n _parentIDIdx: (cols) => index(`${blockTableName}_parent_id_idx`).on(cols._parentID),\n _parentIdFk: (cols) =>\n foreignKey({\n name: `${blockTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [adapter.tables[rootTableName].id],\n }).onDelete('cascade'),\n _pathIdx: (cols) => index(`${blockTableName}_path_idx`).on(cols._path),\n }\n\n if (field.localized && adapter.payload.config.localization) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${blockTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: blockTableName,\n versions,\n })\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n adapter.relations[`relations_${blockTableName}`] = relations(\n adapter.tables[blockTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[rootTableName], {\n fields: [adapter.tables[blockTableName]._parentID],\n references: [adapter.tables[rootTableName].id],\n relationName: `_blocks_${block.slug}`,\n }),\n }\n\n if (hasLocalesTable(block.fields)) {\n result._locales = many(\n adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n { relationName: '_locales' },\n )\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const blockWithLocalized = localized\n ? `${blockTableName}${adapter.localesSuffix}`\n : blockTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[blockWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.tables[blockTableName],\n tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks\n rootRelationsToBuild.set(`_blocks_${block.slug}`, {\n type: 'many',\n // blocks are not localized on the parent table\n localized: false,\n target: blockTableName,\n })\n })\n\n break\n }\n\n case 'tab':\n case 'group': {\n if (!('name' in field)) {\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.fields,\n forceLocalized: field.localized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (tabHasLocalizedField) hasLocalizedField = true\n if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (tabHasManyTextField) hasManyTextField = true\n if (tabHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (tabHasManyNumberField) hasManyNumberField = true\n if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'row':\n case 'collapsible': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n const {\n hasLocalizedField: rowHasLocalizedField,\n hasLocalizedManyNumberField: rowHasLocalizedManyNumberField,\n hasLocalizedManyTextField: rowHasLocalizedManyTextField,\n hasLocalizedRelationshipField: rowHasLocalizedRelationshipField,\n hasManyNumberField: rowHasManyNumberField,\n hasManyTextField: rowHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n })\n\n if (rowHasLocalizedField) hasLocalizedField = true\n if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (rowHasManyTextField) hasManyTextField = true\n if (rowHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (rowHasManyNumberField) hasManyNumberField = true\n if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => relationships.add(relation))\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n } else {\n // simple relationships get a column on the targetTable with a foreign key to the relationTo table\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo))\n\n // get the id type of the related collection\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n const relatedCollectionCustomID = relationshipConfig.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (relatedCollectionCustomID?.type === 'number') colType = 'numeric'\n if (relatedCollectionCustomID?.type === 'text') colType = 'varchar'\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = parentIDColumnMap[colType](`${columnName}_id`).references(\n () => adapter.tables[tableName].id,\n { onDelete: 'set null' },\n )\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && field.localized,\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull()\n }\n break\n }\n if (adapter.payload.config.localization && field.localized) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull()\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["relations","PgNumericBuilder","PgUUIDBuilder","PgVarcharBuilder","boolean","foreignKey","index","integer","jsonb","numeric","text","timestamp","varchar","InvalidConfiguration","fieldAffectsData","optionIsObject","toSnakeCase","createTableName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","createIndex","idToUUID","parentIDColumnMap","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationsToBuild","relationships","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","id","forEach","field","name","columnName","fieldName","targetTable","targetIndexes","replace","payload","config","localization","localized","type","hasMany","unique","includes","constraintValue","fieldConstraints","tableName","mode","precision","withTimezone","enumName","prefix","target","enums","pgSchema","enum","options","map","option","value","selectTableName","versionsCustomName","baseColumns","order","notNull","parent","baseExtraConfig","orderIdx","cols","on","parentFk","foreignColumns","tables","onDelete","parentIdx","locale","enum__locales","localeIdx","set","one","references","relationName","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDFk","_parentIDIdx","_locale","_localeIdx","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","many","result","_locales","localesSuffix","key","arrayWithLocalized","blocks","block","blockTableName","_path","_parentIdFk","_pathIdx","slug","blockWithLocalized","process","env","NODE_ENV","table","tableLocales","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","Array","isArray","relationTo","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","required"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/postgres/schema/traverseFields.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core'\nimport type { Field, SanitizedJoins, TabAsField } from 'payload'\n\nimport { relations } from 'drizzle-orm'\nimport {\n boolean,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n PgNumericBuilder,\n PgUUIDBuilder,\n PgVarcharBuilder,\n text,\n timestamp,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, fieldIsVirtual, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n BaseExtraConfig,\n BasePostgresAdapter,\n GenericColumns,\n IDType,\n RelationMap,\n} from '../types.js'\n\nimport { createTableName } from '../../createTableName.js'\nimport { buildIndexName } from '../../utilities/buildIndexName.js'\nimport { hasLocalesTable } from '../../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { idToUUID } from './idToUUID.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: BasePostgresAdapter\n columnPrefix?: string\n columns: Record<string, PgColumnBuilder>\n disableNotNull: boolean\n disableRelsTableUnique?: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n localesColumns: Record<string, PgColumnBuilder>\n localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n newTableName: string\n parentTableName: string\n relationships: Set<string>\n relationsToBuild: RelationMap\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: string\n rootTableName: string\n uniqueRelationships: Set<string>\n versions: boolean\n /**\n * Tracks whether or not this table is built\n * from the result of a localized array or block field at some point\n */\n withinLocalizedArrayOrBlock?: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableRelsTableUnique,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock,\n}: Args): Result => {\n const throwValidationError = true\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n if (columns.id instanceof PgUUIDBuilder) {\n parentIDColType = 'uuid'\n }\n if (columns.id instanceof PgNumericBuilder) {\n parentIDColType = 'numeric'\n }\n if (columns.id instanceof PgVarcharBuilder) {\n parentIDColType = 'varchar'\n }\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') {\n return\n }\n if (fieldIsVirtual(field)) {\n return\n }\n\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index || ['relationship', 'upload'].includes(field.type)) &&\n !['array', 'blocks', 'group', 'point'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true) &&\n !('relationTo' in field && Array.isArray(field.relationTo))\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n\n const indexName = buildIndexName({ name: `${newTableName}_${columnName}`, adapter })\n\n targetIndexes[indexName] = createIndex({\n name: field.localized ? [fieldName, '_locale'] : fieldName,\n indexName,\n unique,\n })\n }\n }\n\n switch (field.type) {\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(numeric(columnName), field)\n }\n break\n }\n\n case 'richText':\n case 'json': {\n targetTable[fieldName] = withDefault(jsonb(columnName), field)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n timestamp(columnName, {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n }),\n field,\n )\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n adapter.enums[enumName] = adapter.pgSchema.enum(\n enumName,\n field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]],\n )\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n order: integer('order').notNull(),\n parent: parentIDColumnMap[parentIDColType]('parent_id').notNull(),\n value: adapter.enums[enumName]('value'),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n orderIdx: (cols) => index(`${selectTableName}_order_idx`).on(cols.order),\n parentFk: (cols) =>\n foreignKey({\n name: `${selectTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n parentIdx: (cols) => index(`${selectTableName}_parent_idx`).on(cols.parent),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns.locale = adapter.enums.enum__locales('locale').notNull()\n baseExtraConfig.localeIdx = (cols) =>\n index(`${selectTableName}_locale_idx`).on(cols.locale)\n }\n\n if (field.index) {\n baseExtraConfig.value = (cols) => index(`${selectTableName}_value_idx`).on(cols.value)\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull,\n disableUnique,\n fields: [],\n rootTableName,\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // selects have their own localized table, independent of the base table.\n localized: false,\n target: selectTableName,\n })\n\n adapter.relations[`relations_${selectTableName}`] = relations(\n adapter.tables[selectTableName],\n ({ one }) => ({\n parent: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[selectTableName].parent],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }),\n )\n } else {\n targetTable[fieldName] = withDefault(adapter.enums[enumName](columnName), field)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = withDefault(boolean(columnName), field)\n break\n }\n\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[parentIDColType]('_parent_id').notNull(),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${arrayTableName}_order_idx`).on(cols._order),\n _parentIDFk: (cols) =>\n foreignKey({\n name: `${arrayTableName}_parent_id_fk`,\n columns: [cols['_parentID']],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n _parentIDIdx: (cols) => index(`${arrayTableName}_parent_id_idx`).on(cols._parentID),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${arrayTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n tableName: arrayTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // arrays have their own localized table, independent of the base table.\n localized: false,\n target: arrayTableName,\n })\n\n adapter.relations[`relations_${arrayTableName}`] = relations(\n adapter.tables[arrayTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[arrayTableName]._parentID],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }\n\n if (hasLocalesTable(field.fields)) {\n result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`], {\n relationName: '_locales',\n })\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const arrayWithLocalized = localized\n ? `${arrayTableName}${adapter.localesSuffix}`\n : arrayTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[arrayWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n\n break\n }\n\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = createTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[rootTableIDColType]('_parent_id').notNull(),\n _path: text('_path').notNull(),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${blockTableName}_order_idx`).on(cols._order),\n _parentIdFk: (cols) =>\n foreignKey({\n name: `${blockTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [adapter.tables[rootTableName].id],\n }).onDelete('cascade'),\n _parentIDIdx: (cols) => index(`${blockTableName}_parent_id_idx`).on(cols._parentID),\n _pathIdx: (cols) => index(`${blockTableName}_path_idx`).on(cols._path),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${blockTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n tableName: blockTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n adapter.relations[`relations_${blockTableName}`] = relations(\n adapter.tables[blockTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[rootTableName], {\n fields: [adapter.tables[blockTableName]._parentID],\n references: [adapter.tables[rootTableName].id],\n relationName: `_blocks_${block.slug}`,\n }),\n }\n\n if (hasLocalesTable(block.fields)) {\n result._locales = many(\n adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n { relationName: '_locales' },\n )\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const blockWithLocalized = localized\n ? `${blockTableName}${adapter.localesSuffix}`\n : blockTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[blockWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.tables[blockTableName],\n tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks\n rootRelationsToBuild.set(`_blocks_${block.slug}`, {\n type: 'many',\n // blocks are not localized on the parent table\n localized: false,\n target: blockTableName,\n })\n })\n\n break\n }\n\n case 'tab':\n case 'group': {\n if (!('name' in field)) {\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.fields,\n forceLocalized: field.localized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (tabHasLocalizedField) {\n hasLocalizedField = true\n }\n if (tabHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (tabHasManyTextField) {\n hasManyTextField = true\n }\n if (tabHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (tabHasManyNumberField) {\n hasManyNumberField = true\n }\n if (tabHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'row':\n case 'collapsible': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n const {\n hasLocalizedField: rowHasLocalizedField,\n hasLocalizedManyNumberField: rowHasLocalizedManyNumberField,\n hasLocalizedManyTextField: rowHasLocalizedManyTextField,\n hasLocalizedRelationshipField: rowHasLocalizedRelationshipField,\n hasManyNumberField: rowHasManyNumberField,\n hasManyTextField: rowHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (rowHasLocalizedField) {\n hasLocalizedField = true\n }\n if (rowHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (rowHasManyTextField) {\n hasManyTextField = true\n }\n if (rowHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (rowHasManyNumberField) {\n hasManyNumberField = true\n }\n if (rowHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => {\n relationships.add(relation)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(relation)\n }\n })\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(field.relationTo)\n }\n } else {\n // simple relationships get a column on the targetTable with a foreign key to the relationTo table\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo))\n\n // get the id type of the related collection\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n const relatedCollectionCustomID = relationshipConfig.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (relatedCollectionCustomID?.type === 'number') {\n colType = 'numeric'\n }\n if (relatedCollectionCustomID?.type === 'text') {\n colType = 'varchar'\n }\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = parentIDColumnMap[colType](`${columnName}_id`).references(\n () => adapter.tables[tableName].id,\n { onDelete: 'set null' },\n )\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && (field.localized || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull()\n }\n break\n }\n\n if (\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull()\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["relations","boolean","foreignKey","index","integer","jsonb","numeric","PgNumericBuilder","PgUUIDBuilder","PgVarcharBuilder","text","timestamp","varchar","InvalidConfiguration","fieldAffectsData","fieldIsVirtual","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","createIndex","idToUUID","parentIDColumnMap","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","uniqueRelationships","versions","withinLocalizedArrayOrBlock","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","id","forEach","field","name","columnName","fieldName","targetTable","targetIndexes","replace","payload","config","localization","localized","type","hasMany","unique","includes","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","isLocalized","Boolean","mode","precision","withTimezone","enumName","prefix","target","enums","pgSchema","enum","options","map","option","value","selectTableName","versionsCustomName","baseColumns","order","notNull","parent","baseExtraConfig","orderIdx","cols","on","parentFk","foreignColumns","tables","onDelete","parentIdx","locale","enum__locales","localeIdx","tableName","set","one","references","relationName","disableNotNullFromHere","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDFk","_parentIDIdx","_locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","rootUniqueRelationships","many","result","_locales","localesSuffix","key","arrayWithLocalized","blocks","block","blockTableName","_path","_parentIdFk","_pathIdx","slug","blockWithLocalized","process","env","NODE_ENV","table","tableLocales","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","required"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withDefault.d.ts","sourceRoot":"","sources":["../../../src/postgres/schema/withDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,eAAO,MAAM,WAAW,WACd,eAAe,SAChB,kBAAkB,KACxB,eAUF,CAAA"}
1
+ {"version":3,"file":"withDefault.d.ts","sourceRoot":"","sources":["../../../src/postgres/schema/withDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,eAAO,MAAM,WAAW,WACd,eAAe,SAChB,kBAAkB,KACxB,eAWF,CAAA"}
@@ -1,5 +1,7 @@
1
1
  export const withDefault = (column, field)=>{
2
- if (typeof field.defaultValue === 'undefined' || typeof field.defaultValue === 'function') return column;
2
+ if (typeof field.defaultValue === 'undefined' || typeof field.defaultValue === 'function') {
3
+ return column;
4
+ }
3
5
  if (typeof field.defaultValue === 'string' && field.defaultValue.includes("'")) {
4
6
  const escapedString = field.defaultValue.replaceAll("'", "''");
5
7
  return column.default(escapedString);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/postgres/schema/withDefault.ts"],"sourcesContent":["import type { PgColumnBuilder } from 'drizzle-orm/pg-core'\nimport type { FieldAffectingData } from 'payload'\n\nexport const withDefault = (\n column: PgColumnBuilder,\n field: FieldAffectingData,\n): PgColumnBuilder => {\n if (typeof field.defaultValue === 'undefined' || typeof field.defaultValue === 'function')\n return column\n\n if (typeof field.defaultValue === 'string' && field.defaultValue.includes(\"'\")) {\n const escapedString = field.defaultValue.replaceAll(\"'\", \"''\")\n return column.default(escapedString)\n }\n\n return column.default(field.defaultValue)\n}\n"],"names":["withDefault","column","field","defaultValue","includes","escapedString","replaceAll","default"],"mappings":"AAGA,OAAO,MAAMA,cAAc,CACzBC,QACAC;IAEA,IAAI,OAAOA,MAAMC,YAAY,KAAK,eAAe,OAAOD,MAAMC,YAAY,KAAK,YAC7E,OAAOF;IAET,IAAI,OAAOC,MAAMC,YAAY,KAAK,YAAYD,MAAMC,YAAY,CAACC,QAAQ,CAAC,MAAM;QAC9E,MAAMC,gBAAgBH,MAAMC,YAAY,CAACG,UAAU,CAAC,KAAK;QACzD,OAAOL,OAAOM,OAAO,CAACF;IACxB;IAEA,OAAOJ,OAAOM,OAAO,CAACL,MAAMC,YAAY;AAC1C,EAAC"}
1
+ {"version":3,"sources":["../../../src/postgres/schema/withDefault.ts"],"sourcesContent":["import type { PgColumnBuilder } from 'drizzle-orm/pg-core'\nimport type { FieldAffectingData } from 'payload'\n\nexport const withDefault = (\n column: PgColumnBuilder,\n field: FieldAffectingData,\n): PgColumnBuilder => {\n if (typeof field.defaultValue === 'undefined' || typeof field.defaultValue === 'function') {\n return column\n }\n\n if (typeof field.defaultValue === 'string' && field.defaultValue.includes(\"'\")) {\n const escapedString = field.defaultValue.replaceAll(\"'\", \"''\")\n return column.default(escapedString)\n }\n\n return column.default(field.defaultValue)\n}\n"],"names":["withDefault","column","field","defaultValue","includes","escapedString","replaceAll","default"],"mappings":"AAGA,OAAO,MAAMA,cAAc,CACzBC,QACAC;IAEA,IAAI,OAAOA,MAAMC,YAAY,KAAK,eAAe,OAAOD,MAAMC,YAAY,KAAK,YAAY;QACzF,OAAOF;IACT;IAEA,IAAI,OAAOC,MAAMC,YAAY,KAAK,YAAYD,MAAMC,YAAY,CAACC,QAAQ,CAAC,MAAM;QAC9E,MAAMC,gBAAgBH,MAAMC,YAAY,CAACG,UAAU,CAAC,KAAK;QACzD,OAAOL,OAAOM,OAAO,CAACF;IACxB;IAEA,OAAOJ,OAAOM,OAAO,CAACL,MAAMC,YAAY;AAC1C,EAAC"}
@@ -1,15 +1,16 @@
1
1
  import type { DrizzleSnapshotJSON } from 'drizzle-kit/api';
2
2
  import type { ColumnBaseConfig, ColumnDataType, DrizzleConfig, Relation, Relations, SQL } from 'drizzle-orm';
3
3
  import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
4
- import type { ForeignKeyBuilder, IndexBuilder, PgColumn, PgEnum, PgInsertOnConflictDoUpdateConfig, PgSchema, PgTableWithColumns, UniqueConstraintBuilder, pgEnum } from 'drizzle-orm/pg-core';
4
+ import type { ForeignKeyBuilder, IndexBuilder, PgColumn, PgEnum, pgEnum, PgInsertOnConflictDoUpdateConfig, PgSchema, PgTableWithColumns, UniqueConstraintBuilder } from 'drizzle-orm/pg-core';
5
5
  import type { PgTableFn } from 'drizzle-orm/pg-core/table';
6
6
  import type { Payload, PayloadRequest } from 'payload';
7
- import type { QueryResult } from 'pg';
8
- import type { Operators } from '../index.js';
7
+ import type { ClientConfig, QueryResult } from 'pg';
8
+ import type { extendDrizzleTable, Operators } from '../index.js';
9
9
  import type { BuildQueryJoinAliases, DrizzleAdapter, TransactionPg } from '../types.js';
10
10
  export type BaseExtraConfig = Record<string, (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder>;
11
11
  export type RelationMap = Map<string, {
12
12
  localized: boolean;
13
+ relationName?: string;
13
14
  target: string;
14
15
  type: 'many' | 'one';
15
16
  }>;
@@ -52,14 +53,39 @@ export type Insert = (args: {
52
53
  tableName: string;
53
54
  values: Record<string, unknown> | Record<string, unknown>[];
54
55
  }) => Promise<Record<string, unknown>[]>;
56
+ export type CreateDatabase = (args?: {
57
+ /**
58
+ * Name of a database, defaults to the current one
59
+ */
60
+ name?: string;
61
+ /**
62
+ * Schema to create in addition to 'public'. Defaults from adapter.schemaName if exists.
63
+ */
64
+ schemaName?: string;
65
+ }) => Promise<boolean>;
55
66
  type Schema = {
56
67
  enum: typeof pgEnum;
57
- table: PgTableFn;
68
+ table: PgTableFn<string>;
58
69
  } | PgSchema;
70
+ type PostgresSchema = {
71
+ enums: Record<string, GenericEnum>;
72
+ relations: Record<string, GenericRelation>;
73
+ tables: Record<string, PgTableWithColumns<any>>;
74
+ };
75
+ type PostgresSchemaHookArgs = {
76
+ adapter: PostgresDrizzleAdapter;
77
+ extendTable: typeof extendDrizzleTable;
78
+ schema: PostgresSchema;
79
+ };
80
+ export type PostgresSchemaHook = (args: PostgresSchemaHookArgs) => PostgresSchema | Promise<PostgresSchema>;
59
81
  export type BasePostgresAdapter = {
82
+ afterSchemaInit: PostgresSchemaHook[];
83
+ beforeSchemaInit: PostgresSchemaHook[];
60
84
  countDistinct: CountDistinct;
85
+ createDatabase: CreateDatabase;
61
86
  defaultDrizzleSnapshot: DrizzleSnapshotJSON;
62
87
  deleteWhere: DeleteWhere;
88
+ disableCreateDatabase: boolean;
63
89
  drizzle: PostgresDB;
64
90
  dropDatabase: DropDatabase;
65
91
  enums: Record<string, GenericEnum>;
@@ -75,7 +101,8 @@ export type BasePostgresAdapter = {
75
101
  localesSuffix?: string;
76
102
  logger: DrizzleConfig['logger'];
77
103
  operators: Operators;
78
- pgSchema?: Schema;
104
+ pgSchema: Schema;
105
+ poolOptions?: ClientConfig;
79
106
  prodMigrations?: {
80
107
  down: (args: MigrateDownArgs) => Promise<void>;
81
108
  name: string;
@@ -102,11 +129,11 @@ export type PostgresDrizzleAdapter = Omit<DrizzleAdapter, 'countDistinct' | 'del
102
129
  export type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar';
103
130
  export type MigrateUpArgs = {
104
131
  payload: Payload;
105
- req?: Partial<PayloadRequest>;
132
+ req: PayloadRequest;
106
133
  };
107
134
  export type MigrateDownArgs = {
108
135
  payload: Payload;
109
- req?: Partial<PayloadRequest>;
136
+ req: PayloadRequest;
110
137
  };
111
138
  export {};
112
139
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/postgres/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/postgres/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/postgres/types.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type {\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n Relation,\n Relations,\n SQL,\n} from 'drizzle-orm'\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres'\nimport type {\n ForeignKeyBuilder,\n IndexBuilder,\n PgColumn,\n PgEnum,\n PgInsertOnConflictDoUpdateConfig,\n PgSchema,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n pgEnum,\n} from 'drizzle-orm/pg-core'\nimport type { PgTableFn } from 'drizzle-orm/pg-core/table'\nimport type { Payload, PayloadRequest } from 'payload'\nimport type { QueryResult } from 'pg'\n\nimport type { Operators } from '../index.js'\nimport type { BuildQueryJoinAliases, DrizzleAdapter, TransactionPg } from '../types.js'\n\nexport type BaseExtraConfig = Record<\n string,\n (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder\n>\n\nexport type RelationMap = Map<string, { localized: boolean; target: string; type: 'many' | 'one' }>\n\nexport type GenericColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns = {\n [x: string]: GenericColumn\n}\n\nexport type GenericTable = PgTableWithColumns<{\n columns: GenericColumns\n dialect: string\n name: string\n schema: string\n}>\n\nexport type GenericEnum = PgEnum<[string, ...string[]]>\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type PostgresDB = NodePgDatabase<Record<string, unknown>>\n\nexport type CountDistinct = (args: {\n db: PostgresDB | TransactionPg\n joins: BuildQueryJoinAliases\n tableName: string\n where: SQL\n}) => Promise<number>\n\nexport type DeleteWhere = (args: {\n db: PostgresDB | TransactionPg\n tableName: string\n where: SQL\n}) => Promise<void>\n\nexport type DropDatabase = (args: { adapter: BasePostgresAdapter }) => Promise<void>\n\nexport type Execute<T> = (args: {\n db?: PostgresDB | TransactionPg\n drizzle?: PostgresDB\n raw?: string\n sql?: SQL<unknown>\n}) => Promise<QueryResult<Record<string, T>>>\n\nexport type Insert = (args: {\n db: PostgresDB | TransactionPg\n onConflictDoUpdate?: PgInsertOnConflictDoUpdateConfig<any>\n tableName: string\n values: Record<string, unknown> | Record<string, unknown>[]\n}) => Promise<Record<string, unknown>[]>\n\ntype Schema =\n | {\n enum: typeof pgEnum\n table: PgTableFn\n }\n | PgSchema\n\nexport type BasePostgresAdapter = {\n countDistinct: CountDistinct\n defaultDrizzleSnapshot: DrizzleSnapshotJSON\n deleteWhere: DeleteWhere\n drizzle: PostgresDB\n dropDatabase: DropDatabase\n enums: Record<string, GenericEnum>\n execute: Execute<unknown>\n /**\n * 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\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n idType: 'serial' | 'uuid'\n initializing: Promise<void>\n insert: Insert\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n operators: Operators\n pgSchema?: Schema\n prodMigrations?: {\n down: (args: MigrateDownArgs) => Promise<void>\n name: string\n up: (args: MigrateUpArgs) => Promise<void>\n }[]\n push: boolean\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n resolveInitializing: () => void\n schemaName?: string\n sessions: {\n [id: string]: {\n db: PostgresDB | TransactionPg\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tableNameMap: Map<string, string>\n tables: Record<string, GenericTable>\n versionsSuffix?: string\n} & PostgresDrizzleAdapter\n\nexport type PostgresDrizzleAdapter = Omit<\n DrizzleAdapter,\n | 'countDistinct'\n | 'deleteWhere'\n | 'drizzle'\n | 'dropDatabase'\n | 'execute'\n | 'insert'\n | 'operators'\n | 'relations'\n>\n\nexport type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar'\n\nexport type MigrateUpArgs = { payload: Payload; req?: Partial<PayloadRequest> }\nexport type MigrateDownArgs = { payload: Payload; req?: Partial<PayloadRequest> }\n"],"names":[],"mappings":"AAuJA,WAAiF"}
1
+ {"version":3,"sources":["../../src/postgres/types.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type {\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n Relation,\n Relations,\n SQL,\n} from 'drizzle-orm'\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres'\nimport type {\n ForeignKeyBuilder,\n IndexBuilder,\n PgColumn,\n PgEnum,\n pgEnum,\n PgInsertOnConflictDoUpdateConfig,\n PgSchema,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/pg-core'\nimport type { PgTableFn } from 'drizzle-orm/pg-core/table'\nimport type { Payload, PayloadRequest } from 'payload'\nimport type { ClientConfig, QueryResult } from 'pg'\n\nimport type { extendDrizzleTable, Operators } from '../index.js'\nimport type { BuildQueryJoinAliases, DrizzleAdapter, TransactionPg } from '../types.js'\n\nexport type BaseExtraConfig = Record<\n string,\n (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder\n>\n\nexport type RelationMap = Map<\n string,\n {\n localized: boolean\n relationName?: string\n target: string\n type: 'many' | 'one'\n }\n>\n\nexport type GenericColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns = {\n [x: string]: GenericColumn\n}\n\nexport type GenericTable = PgTableWithColumns<{\n columns: GenericColumns\n dialect: string\n name: string\n schema: string\n}>\n\nexport type GenericEnum = PgEnum<[string, ...string[]]>\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type PostgresDB = NodePgDatabase<Record<string, unknown>>\n\nexport type CountDistinct = (args: {\n db: PostgresDB | TransactionPg\n joins: BuildQueryJoinAliases\n tableName: string\n where: SQL\n}) => Promise<number>\n\nexport type DeleteWhere = (args: {\n db: PostgresDB | TransactionPg\n tableName: string\n where: SQL\n}) => Promise<void>\n\nexport type DropDatabase = (args: { adapter: BasePostgresAdapter }) => Promise<void>\n\nexport type Execute<T> = (args: {\n db?: PostgresDB | TransactionPg\n drizzle?: PostgresDB\n raw?: string\n sql?: SQL<unknown>\n}) => Promise<QueryResult<Record<string, T>>>\n\nexport type Insert = (args: {\n db: PostgresDB | TransactionPg\n onConflictDoUpdate?: PgInsertOnConflictDoUpdateConfig<any>\n tableName: string\n values: Record<string, unknown> | Record<string, unknown>[]\n}) => Promise<Record<string, unknown>[]>\n\nexport type CreateDatabase = (args?: {\n /**\n * Name of a database, defaults to the current one\n */\n name?: string\n /**\n * Schema to create in addition to 'public'. Defaults from adapter.schemaName if exists.\n */\n schemaName?: string\n}) => Promise<boolean>\n\ntype Schema =\n | {\n enum: typeof pgEnum\n table: PgTableFn<string>\n }\n | PgSchema\n\ntype PostgresSchema = {\n enums: Record<string, GenericEnum>\n relations: Record<string, GenericRelation>\n tables: Record<string, PgTableWithColumns<any>>\n}\n\ntype PostgresSchemaHookArgs = {\n adapter: PostgresDrizzleAdapter\n extendTable: typeof extendDrizzleTable\n schema: PostgresSchema\n}\n\nexport type PostgresSchemaHook = (\n args: PostgresSchemaHookArgs,\n) => PostgresSchema | Promise<PostgresSchema>\n\nexport type BasePostgresAdapter = {\n afterSchemaInit: PostgresSchemaHook[]\n beforeSchemaInit: PostgresSchemaHook[]\n countDistinct: CountDistinct\n createDatabase: CreateDatabase\n defaultDrizzleSnapshot: DrizzleSnapshotJSON\n deleteWhere: DeleteWhere\n disableCreateDatabase: boolean\n drizzle: PostgresDB\n dropDatabase: DropDatabase\n enums: Record<string, GenericEnum>\n execute: Execute<unknown>\n /**\n * 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\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n idType: 'serial' | 'uuid'\n initializing: Promise<void>\n insert: Insert\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n operators: Operators\n pgSchema: Schema\n poolOptions?: ClientConfig\n prodMigrations?: {\n down: (args: MigrateDownArgs) => Promise<void>\n name: string\n up: (args: MigrateUpArgs) => Promise<void>\n }[]\n push: boolean\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n resolveInitializing: () => void\n schemaName?: string\n sessions: {\n [id: string]: {\n db: PostgresDB | TransactionPg\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tableNameMap: Map<string, string>\n tables: Record<string, GenericTable>\n versionsSuffix?: string\n} & PostgresDrizzleAdapter\n\nexport type PostgresDrizzleAdapter = Omit<\n DrizzleAdapter,\n | 'countDistinct'\n | 'deleteWhere'\n | 'drizzle'\n | 'dropDatabase'\n | 'execute'\n | 'insert'\n | 'operators'\n | 'relations'\n>\n\nexport type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar'\n\nexport type MigrateUpArgs = { payload: Payload; req: PayloadRequest }\nexport type MigrateDownArgs = { payload: Payload; req: PayloadRequest }\n"],"names":[],"mappings":"AA+LA,WAAuE"}
@@ -0,0 +1,11 @@
1
+ import type { SQL } from 'drizzle-orm';
2
+ import type { PgTableWithColumns } from 'drizzle-orm/pg-core';
3
+ import type { GenericTable } from '../types.js';
4
+ import type { BuildQueryJoinAliases } from './buildQuery.js';
5
+ export declare const addJoinTable: ({ type, condition, joins, table, }: {
6
+ condition: SQL;
7
+ joins: BuildQueryJoinAliases;
8
+ table: GenericTable | PgTableWithColumns<any>;
9
+ type?: "innerJoin" | "leftJoin" | "rightJoin";
10
+ }) => void;
11
+ //# sourceMappingURL=addJoinTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addJoinTable.d.ts","sourceRoot":"","sources":["../../src/queries/addJoinTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,eAAO,MAAM,YAAY,uCAKtB;IACD,SAAS,EAAE,GAAG,CAAA;IACd,KAAK,EAAE,qBAAqB,CAAA;IAC5B,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,SAMA,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
2
+ export const addJoinTable = ({ type, condition, joins, table })=>{
3
+ const name = getNameFromDrizzleTable(table);
4
+ if (!joins.some((eachJoin)=>getNameFromDrizzleTable(eachJoin.table) === name)) {
5
+ joins.push({
6
+ type,
7
+ condition,
8
+ table
9
+ });
10
+ }
11
+ };
12
+
13
+ //# sourceMappingURL=addJoinTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/addJoinTable.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\n\nimport type { GenericTable } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\n\nexport const addJoinTable = ({\n type,\n condition,\n joins,\n table,\n}: {\n condition: SQL\n joins: BuildQueryJoinAliases\n table: GenericTable | PgTableWithColumns<any>\n type?: 'innerJoin' | 'leftJoin' | 'rightJoin'\n}) => {\n const name = getNameFromDrizzleTable(table)\n\n if (!joins.some((eachJoin) => getNameFromDrizzleTable(eachJoin.table) === name)) {\n joins.push({ type, condition, table })\n }\n}\n"],"names":["getNameFromDrizzleTable","addJoinTable","type","condition","joins","table","name","some","eachJoin","push"],"mappings":"AAMA,SAASA,uBAAuB,QAAQ,0CAAyC;AAEjF,OAAO,MAAMC,eAAe,CAAC,EAC3BC,IAAI,EACJC,SAAS,EACTC,KAAK,EACLC,KAAK,EAMN;IACC,MAAMC,OAAON,wBAAwBK;IAErC,IAAI,CAACD,MAAMG,IAAI,CAAC,CAACC,WAAaR,wBAAwBQ,SAASH,KAAK,MAAMC,OAAO;QAC/EF,MAAMK,IAAI,CAAC;YAAEP;YAAMC;YAAWE;QAAM;IACtC;AACF,EAAC"}
@@ -12,5 +12,5 @@ export declare function buildAndOrConditions({ adapter, fields, joins, locale, s
12
12
  selectFields: Record<string, GenericColumn>;
13
13
  tableName: string;
14
14
  where: Where[];
15
- }): Promise<SQL[]>;
15
+ }): SQL[];
16
16
  //# sourceMappingURL=buildAndOrConditions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,EAAE,CAAA;CACf,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAwBjB"}
1
+ {"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,EAAE,CAAA;CACf,GAAG,GAAG,EAAE,CAuBR"}
@@ -1,14 +1,12 @@
1
1
  import { parseParams } from './parseParams.js';
2
- export async function buildAndOrConditions({ adapter, fields, joins, locale, selectFields, tableName, where }) {
2
+ export function buildAndOrConditions({ adapter, fields, joins, locale, selectFields, tableName, where }) {
3
3
  const completedConditions = [];
4
4
  // Loop over all AND / OR operations and add them to the AND / OR query param
5
5
  // Operations should come through as an array
6
- // eslint-disable-next-line no-restricted-syntax
7
6
  for (const condition of where){
8
7
  // If the operation is properly formatted as an object
9
8
  if (typeof condition === 'object') {
10
- // eslint-disable-next-line no-await-in-loop
11
- const result = await parseParams({
9
+ const result = parseParams({
12
10
  adapter,
13
11
  fields,
14
12
  joins,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport async function buildAndOrConditions({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n tableName,\n where,\n}: {\n adapter: DrizzleAdapter\n collectionSlug?: string\n fields: Field[]\n globalSlug?: string\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: Where[]\n}): Promise<SQL[]> {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n // eslint-disable-next-line no-restricted-syntax\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n // eslint-disable-next-line no-await-in-loop\n const result = await parseParams({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","fields","joins","locale","selectFields","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,eAAeC,qBAAqB,EACzCC,OAAO,EACPC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,SAAS,EACTC,KAAK,EAWN;IACC,MAAMC,sBAAsB,EAAE;IAC9B,6EAA6E;IAC7E,6CAA6C;IAC7C,gDAAgD;IAChD,KAAK,MAAMC,aAAaF,MAAO;QAC7B,sDAAsD;QACtD,IAAI,OAAOE,cAAc,UAAU;YACjC,4CAA4C;YAC5C,MAAMC,SAAS,MAAMX,YAAY;gBAC/BE;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC,OAAOE;YACT;YACA,IAAIC,UAAUC,OAAOC,IAAI,CAACF,QAAQG,MAAM,GAAG,GAAG;gBAC5CL,oBAAoBM,IAAI,CAACJ;YAC3B;QACF;IACF;IACA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport function buildAndOrConditions({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n tableName,\n where,\n}: {\n adapter: DrizzleAdapter\n collectionSlug?: string\n fields: Field[]\n globalSlug?: string\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: Where[]\n}): SQL[] {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n const result = parseParams({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","fields","joins","locale","selectFields","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,SAASC,qBAAqB,EACnCC,OAAO,EACPC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,SAAS,EACTC,KAAK,EAWN;IACC,MAAMC,sBAAsB,EAAE;IAC9B,6EAA6E;IAC7E,6CAA6C;IAE7C,KAAK,MAAMC,aAAaF,MAAO;QAC7B,sDAAsD;QACtD,IAAI,OAAOE,cAAc,UAAU;YACjC,MAAMC,SAASX,YAAY;gBACzBE;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC,OAAOE;YACT;YACA,IAAIC,UAAUC,OAAOC,IAAI,CAACF,QAAQG,MAAM,GAAG,GAAG;gBAC5CL,oBAAoBM,IAAI,CAACJ;YAC3B;QACF;IACF;IACA,OAAOF;AACT"}
@@ -0,0 +1,18 @@
1
+ import type { Field, Sort } from 'payload';
2
+ import type { DrizzleAdapter, GenericColumn } from '../types.js';
3
+ import type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js';
4
+ type Args = {
5
+ adapter: DrizzleAdapter;
6
+ fields: Field[];
7
+ joins: BuildQueryJoinAliases;
8
+ locale?: string;
9
+ selectFields: Record<string, GenericColumn>;
10
+ sort?: Sort;
11
+ tableName: string;
12
+ };
13
+ /**
14
+ * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
15
+ */
16
+ export declare const buildOrderBy: ({ adapter, fields, joins, locale, selectFields, sort, tableName, }: Args) => BuildQueryResult["orderBy"];
17
+ export {};
18
+ //# sourceMappingURL=buildOrderBy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAI1C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAI9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,uEAQtB,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAoDnC,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { asc, desc } from 'drizzle-orm';
2
+ import { getTableColumnFromPath } from './getTableColumnFromPath.js';
3
+ /**
4
+ * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
5
+ */ export const buildOrderBy = ({ adapter, fields, joins, locale, selectFields, sort, tableName })=>{
6
+ const orderBy = [];
7
+ if (!sort) {
8
+ const createdAt = adapter.tables[tableName]?.createdAt;
9
+ if (createdAt) {
10
+ sort = '-createdAt';
11
+ } else {
12
+ sort = '-id';
13
+ }
14
+ }
15
+ if (typeof sort === 'string') {
16
+ sort = [
17
+ sort
18
+ ];
19
+ }
20
+ for (const sortItem of sort){
21
+ let sortProperty;
22
+ let sortDirection;
23
+ if (sortItem[0] === '-') {
24
+ sortProperty = sortItem.substring(1);
25
+ sortDirection = 'desc';
26
+ } else {
27
+ sortProperty = sortItem;
28
+ sortDirection = 'asc';
29
+ }
30
+ try {
31
+ const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({
32
+ adapter,
33
+ collectionPath: sortProperty,
34
+ fields,
35
+ joins,
36
+ locale,
37
+ pathSegments: sortProperty.replace(/__/g, '.').split('.'),
38
+ selectFields,
39
+ tableName,
40
+ value: sortProperty
41
+ });
42
+ if (sortTable?.[sortTableColumnName]) {
43
+ orderBy.push({
44
+ column: sortTable[sortTableColumnName],
45
+ order: sortDirection === 'asc' ? asc : desc
46
+ });
47
+ selectFields[sortTableColumnName] = sortTable[sortTableColumnName];
48
+ }
49
+ } catch (err) {
50
+ // continue
51
+ }
52
+ }
53
+ return orderBy;
54
+ };
55
+
56
+ //# sourceMappingURL=buildOrderBy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/buildOrderBy.ts"],"sourcesContent":["import type { Field, Sort } from 'payload'\n\nimport { asc, desc } from 'drizzle-orm'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js'\n\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n fields: Field[]\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n sort?: Sort\n tableName: string\n}\n\n/**\n * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary\n */\nexport const buildOrderBy = ({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n}: Args): BuildQueryResult['orderBy'] => {\n const orderBy: BuildQueryResult['orderBy'] = []\n\n if (!sort) {\n const createdAt = adapter.tables[tableName]?.createdAt\n if (createdAt) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n for (const sortItem of sort) {\n let sortProperty: string\n let sortDirection: 'asc' | 'desc'\n if (sortItem[0] === '-') {\n sortProperty = sortItem.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = sortItem\n sortDirection = 'asc'\n }\n try {\n const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({\n adapter,\n collectionPath: sortProperty,\n fields,\n joins,\n locale,\n pathSegments: sortProperty.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: sortProperty,\n })\n if (sortTable?.[sortTableColumnName]) {\n orderBy.push({\n column: sortTable[sortTableColumnName],\n order: sortDirection === 'asc' ? asc : desc,\n })\n\n selectFields[sortTableColumnName] = sortTable[sortTableColumnName]\n }\n } catch (err) {\n // continue\n }\n }\n\n return orderBy\n}\n"],"names":["asc","desc","getTableColumnFromPath","buildOrderBy","adapter","fields","joins","locale","selectFields","sort","tableName","orderBy","createdAt","tables","sortItem","sortProperty","sortDirection","substring","columnName","sortTableColumnName","table","sortTable","collectionPath","pathSegments","replace","split","value","push","column","order","err"],"mappings":"AAEA,SAASA,GAAG,EAAEC,IAAI,QAAQ,cAAa;AAKvC,SAASC,sBAAsB,QAAQ,8BAA6B;AAYpE;;CAEC,GACD,OAAO,MAAMC,eAAe,CAAC,EAC3BC,OAAO,EACPC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACJ;IACL,MAAMC,UAAuC,EAAE;IAE/C,IAAI,CAACF,MAAM;QACT,MAAMG,YAAYR,QAAQS,MAAM,CAACH,UAAU,EAAEE;QAC7C,IAAIA,WAAW;YACbH,OAAO;QACT,OAAO;YACLA,OAAO;QACT;IACF;IAEA,IAAI,OAAOA,SAAS,UAAU;QAC5BA,OAAO;YAACA;SAAK;IACf;IAEA,KAAK,MAAMK,YAAYL,KAAM;QAC3B,IAAIM;QACJ,IAAIC;QACJ,IAAIF,QAAQ,CAAC,EAAE,KAAK,KAAK;YACvBC,eAAeD,SAASG,SAAS,CAAC;YAClCD,gBAAgB;QAClB,OAAO;YACLD,eAAeD;YACfE,gBAAgB;QAClB;QACA,IAAI;YACF,MAAM,EAAEE,YAAYC,mBAAmB,EAAEC,OAAOC,SAAS,EAAE,GAAGnB,uBAAuB;gBACnFE;gBACAkB,gBAAgBP;gBAChBV;gBACAC;gBACAC;gBACAgB,cAAcR,aAAaS,OAAO,CAAC,OAAO,KAAKC,KAAK,CAAC;gBACrDjB;gBACAE;gBACAgB,OAAOX;YACT;YACA,IAAIM,WAAW,CAACF,oBAAoB,EAAE;gBACpCR,QAAQgB,IAAI,CAAC;oBACXC,QAAQP,SAAS,CAACF,oBAAoB;oBACtCU,OAAOb,kBAAkB,QAAQhB,MAAMC;gBACzC;gBAEAO,YAAY,CAACW,oBAAoB,GAAGE,SAAS,CAACF,oBAAoB;YACpE;QACF,EAAE,OAAOW,KAAK;QACZ,WAAW;QACb;IACF;IAEA,OAAOnB;AACT,EAAC"}