@rvoh/dream 2.7.0 → 2.7.1

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 (180) hide show
  1. package/dist/cjs/src/helpers/cli/generateSerializerContent.js +53 -50
  2. package/dist/esm/src/helpers/cli/generateSerializerContent.js +53 -50
  3. package/docs/classes/db.DreamMigrationHelpers.html +9 -9
  4. package/docs/classes/db.KyselyQueryDriver.html +32 -32
  5. package/docs/classes/db.PostgresQueryDriver.html +33 -33
  6. package/docs/classes/db.QueryDriverBase.html +31 -31
  7. package/docs/classes/errors.CheckConstraintViolation.html +3 -3
  8. package/docs/classes/errors.ColumnOverflow.html +3 -3
  9. package/docs/classes/errors.CreateOrFindByFailedToCreateAndFind.html +3 -3
  10. package/docs/classes/errors.DataIncompatibleWithDatabaseField.html +3 -3
  11. package/docs/classes/errors.DataTypeColumnTypeMismatch.html +3 -3
  12. package/docs/classes/errors.GlobalNameNotSet.html +3 -3
  13. package/docs/classes/errors.InvalidCalendarDate.html +2 -2
  14. package/docs/classes/errors.InvalidClockTime.html +2 -2
  15. package/docs/classes/errors.InvalidClockTimeTz.html +2 -2
  16. package/docs/classes/errors.InvalidDateTime.html +2 -2
  17. package/docs/classes/errors.MissingSerializersDefinition.html +3 -3
  18. package/docs/classes/errors.NonLoadedAssociation.html +3 -3
  19. package/docs/classes/errors.NotNullViolation.html +3 -3
  20. package/docs/classes/errors.RecordNotFound.html +3 -3
  21. package/docs/classes/errors.ValidationError.html +3 -3
  22. package/docs/classes/index.CalendarDate.html +33 -33
  23. package/docs/classes/index.ClockTime.html +32 -32
  24. package/docs/classes/index.ClockTimeTz.html +35 -35
  25. package/docs/classes/index.DateTime.html +86 -86
  26. package/docs/classes/index.Decorators.html +19 -19
  27. package/docs/classes/index.Dream.html +118 -118
  28. package/docs/classes/index.DreamApp.html +5 -5
  29. package/docs/classes/index.DreamTransaction.html +2 -2
  30. package/docs/classes/index.Env.html +2 -2
  31. package/docs/classes/index.Query.html +56 -56
  32. package/docs/classes/system.CliFileWriter.html +4 -4
  33. package/docs/classes/system.DreamBin.html +2 -2
  34. package/docs/classes/system.DreamCLI.html +6 -6
  35. package/docs/classes/system.DreamImporter.html +2 -2
  36. package/docs/classes/system.DreamLogos.html +2 -2
  37. package/docs/classes/system.DreamSerializerBuilder.html +11 -11
  38. package/docs/classes/system.ObjectSerializerBuilder.html +8 -8
  39. package/docs/classes/system.PathHelpers.html +3 -3
  40. package/docs/classes/utils.Encrypt.html +2 -2
  41. package/docs/classes/utils.Range.html +2 -2
  42. package/docs/functions/db.closeAllDbConnections.html +1 -1
  43. package/docs/functions/db.dreamDbConnections.html +1 -1
  44. package/docs/functions/db.untypedDb.html +1 -1
  45. package/docs/functions/db.validateColumn.html +1 -1
  46. package/docs/functions/db.validateTable.html +1 -1
  47. package/docs/functions/errors.pgErrorType.html +1 -1
  48. package/docs/functions/index.DreamSerializer.html +1 -1
  49. package/docs/functions/index.ObjectSerializer.html +1 -1
  50. package/docs/functions/index.ReplicaSafe.html +1 -1
  51. package/docs/functions/index.STI.html +1 -1
  52. package/docs/functions/index.SoftDelete.html +1 -1
  53. package/docs/functions/utils.camelize.html +1 -1
  54. package/docs/functions/utils.capitalize.html +1 -1
  55. package/docs/functions/utils.cloneDeepSafe.html +1 -1
  56. package/docs/functions/utils.compact.html +1 -1
  57. package/docs/functions/utils.groupBy.html +1 -1
  58. package/docs/functions/utils.hyphenize.html +1 -1
  59. package/docs/functions/utils.intersection.html +1 -1
  60. package/docs/functions/utils.isEmpty.html +1 -1
  61. package/docs/functions/utils.normalizeUnicode.html +1 -1
  62. package/docs/functions/utils.pascalize.html +1 -1
  63. package/docs/functions/utils.percent.html +1 -1
  64. package/docs/functions/utils.range.html +1 -1
  65. package/docs/functions/utils.round.html +1 -1
  66. package/docs/functions/utils.sanitizeString.html +1 -1
  67. package/docs/functions/utils.snakeify.html +1 -1
  68. package/docs/functions/utils.sort.html +1 -1
  69. package/docs/functions/utils.sortBy.html +1 -1
  70. package/docs/functions/utils.sortObjectByKey.html +1 -1
  71. package/docs/functions/utils.sortObjectByValue.html +1 -1
  72. package/docs/functions/utils.uncapitalize.html +1 -1
  73. package/docs/functions/utils.uniq.html +1 -1
  74. package/docs/interfaces/openapi.OpenapiDescription.html +2 -2
  75. package/docs/interfaces/openapi.OpenapiSchemaProperties.html +1 -1
  76. package/docs/interfaces/openapi.OpenapiSchemaPropertiesShorthand.html +1 -1
  77. package/docs/interfaces/openapi.OpenapiTypeFieldObject.html +1 -1
  78. package/docs/interfaces/types.BelongsToStatement.html +2 -2
  79. package/docs/interfaces/types.DecoratorContext.html +2 -2
  80. package/docs/interfaces/types.DreamAppInitOptions.html +2 -2
  81. package/docs/interfaces/types.DreamAppOpts.html +2 -2
  82. package/docs/interfaces/types.DurationObject.html +2 -2
  83. package/docs/interfaces/types.EncryptOptions.html +2 -2
  84. package/docs/interfaces/types.InternalAnyTypedSerializerRendersMany.html +2 -2
  85. package/docs/interfaces/types.InternalAnyTypedSerializerRendersOne.html +2 -2
  86. package/docs/interfaces/types.SerializerRendererOpts.html +2 -2
  87. package/docs/types/openapi.CommonOpenapiSchemaObjectFields.html +1 -1
  88. package/docs/types/openapi.OpenapiAllTypes.html +1 -1
  89. package/docs/types/openapi.OpenapiFormats.html +1 -1
  90. package/docs/types/openapi.OpenapiNumberFormats.html +1 -1
  91. package/docs/types/openapi.OpenapiPrimitiveBaseTypes.html +1 -1
  92. package/docs/types/openapi.OpenapiPrimitiveTypes.html +1 -1
  93. package/docs/types/openapi.OpenapiSchemaArray.html +1 -1
  94. package/docs/types/openapi.OpenapiSchemaArrayShorthand.html +1 -1
  95. package/docs/types/openapi.OpenapiSchemaBase.html +1 -1
  96. package/docs/types/openapi.OpenapiSchemaBody.html +1 -1
  97. package/docs/types/openapi.OpenapiSchemaBodyShorthand.html +1 -1
  98. package/docs/types/openapi.OpenapiSchemaCommonFields.html +1 -1
  99. package/docs/types/openapi.OpenapiSchemaExpressionAllOf.html +2 -2
  100. package/docs/types/openapi.OpenapiSchemaExpressionAnyOf.html +2 -2
  101. package/docs/types/openapi.OpenapiSchemaExpressionOneOf.html +2 -2
  102. package/docs/types/openapi.OpenapiSchemaExpressionRef.html +2 -2
  103. package/docs/types/openapi.OpenapiSchemaExpressionRefSchemaShorthand.html +2 -2
  104. package/docs/types/openapi.OpenapiSchemaInteger.html +1 -1
  105. package/docs/types/openapi.OpenapiSchemaNull.html +2 -2
  106. package/docs/types/openapi.OpenapiSchemaNumber.html +1 -1
  107. package/docs/types/openapi.OpenapiSchemaObject.html +1 -1
  108. package/docs/types/openapi.OpenapiSchemaObjectAllOf.html +1 -1
  109. package/docs/types/openapi.OpenapiSchemaObjectAllOfShorthand.html +1 -1
  110. package/docs/types/openapi.OpenapiSchemaObjectAnyOf.html +1 -1
  111. package/docs/types/openapi.OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  112. package/docs/types/openapi.OpenapiSchemaObjectBase.html +1 -1
  113. package/docs/types/openapi.OpenapiSchemaObjectBaseShorthand.html +1 -1
  114. package/docs/types/openapi.OpenapiSchemaObjectOneOf.html +1 -1
  115. package/docs/types/openapi.OpenapiSchemaObjectOneOfShorthand.html +1 -1
  116. package/docs/types/openapi.OpenapiSchemaObjectShorthand.html +1 -1
  117. package/docs/types/openapi.OpenapiSchemaPrimitiveGeneric.html +1 -1
  118. package/docs/types/openapi.OpenapiSchemaShorthandExpressionAllOf.html +2 -2
  119. package/docs/types/openapi.OpenapiSchemaShorthandExpressionAnyOf.html +2 -2
  120. package/docs/types/openapi.OpenapiSchemaShorthandExpressionOneOf.html +2 -2
  121. package/docs/types/openapi.OpenapiSchemaShorthandExpressionSerializableRef.html +2 -2
  122. package/docs/types/openapi.OpenapiSchemaShorthandExpressionSerializerRef.html +2 -2
  123. package/docs/types/openapi.OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  124. package/docs/types/openapi.OpenapiSchemaString.html +1 -1
  125. package/docs/types/openapi.OpenapiShorthandAllTypes.html +1 -1
  126. package/docs/types/openapi.OpenapiShorthandPrimitiveBaseTypes.html +1 -1
  127. package/docs/types/openapi.OpenapiShorthandPrimitiveTypes.html +1 -1
  128. package/docs/types/openapi.OpenapiTypeField.html +1 -1
  129. package/docs/types/system.DreamAppAllowedPackageManagersEnum.html +1 -1
  130. package/docs/types/types.CalendarDateDurationUnit.html +1 -1
  131. package/docs/types/types.CalendarDateObject.html +1 -1
  132. package/docs/types/types.Camelized.html +1 -1
  133. package/docs/types/types.ClockTimeObject.html +1 -1
  134. package/docs/types/types.DbConnectionType.html +1 -1
  135. package/docs/types/types.DbTypes.html +1 -1
  136. package/docs/types/types.DreamAssociationMetadata.html +1 -1
  137. package/docs/types/types.DreamAttributes.html +1 -1
  138. package/docs/types/types.DreamClassAssociationAndStatement.html +1 -1
  139. package/docs/types/types.DreamClassColumn.html +1 -1
  140. package/docs/types/types.DreamColumn.html +1 -1
  141. package/docs/types/types.DreamColumnNames.html +1 -1
  142. package/docs/types/types.DreamLogLevel.html +1 -1
  143. package/docs/types/types.DreamLogger.html +2 -2
  144. package/docs/types/types.DreamModelSerializerType.html +1 -1
  145. package/docs/types/types.DreamOrViewModelClassSerializerKey.html +1 -1
  146. package/docs/types/types.DreamOrViewModelSerializerKey.html +1 -1
  147. package/docs/types/types.DreamParamSafeAttributes.html +1 -1
  148. package/docs/types/types.DreamParamSafeColumnNames.html +1 -1
  149. package/docs/types/types.DreamSerializable.html +1 -1
  150. package/docs/types/types.DreamSerializableArray.html +1 -1
  151. package/docs/types/types.DreamSerializerKey.html +1 -1
  152. package/docs/types/types.DreamSerializers.html +1 -1
  153. package/docs/types/types.DreamVirtualColumns.html +1 -1
  154. package/docs/types/types.DurationUnit.html +1 -1
  155. package/docs/types/types.EncryptAlgorithm.html +1 -1
  156. package/docs/types/types.HasManyStatement.html +1 -1
  157. package/docs/types/types.HasOneStatement.html +1 -1
  158. package/docs/types/types.Hyphenized.html +1 -1
  159. package/docs/types/types.Pascalized.html +1 -1
  160. package/docs/types/types.PrimaryKeyType.html +1 -1
  161. package/docs/types/types.RoundingPrecision.html +1 -1
  162. package/docs/types/types.SerializerCasing.html +1 -1
  163. package/docs/types/types.SimpleObjectSerializerType.html +1 -1
  164. package/docs/types/types.Snakeified.html +1 -1
  165. package/docs/types/types.StrictInterface.html +1 -1
  166. package/docs/types/types.UpdateableAssociationProperties.html +1 -1
  167. package/docs/types/types.UpdateableProperties.html +1 -1
  168. package/docs/types/types.ValidationType.html +1 -1
  169. package/docs/types/types.ViewModel.html +2 -2
  170. package/docs/types/types.ViewModelClass.html +1 -1
  171. package/docs/types/types.WeekdayName.html +1 -1
  172. package/docs/types/types.WhereStatementForDream.html +1 -1
  173. package/docs/types/types.WhereStatementForDreamClass.html +1 -1
  174. package/docs/variables/index.DreamConst.html +1 -1
  175. package/docs/variables/index.ops.html +1 -1
  176. package/docs/variables/openapi.openapiPrimitiveTypes.html +1 -1
  177. package/docs/variables/openapi.openapiShorthandPrimitiveTypes.html +1 -1
  178. package/docs/variables/system.DreamAppAllowedPackageManagersEnumValues.html +1 -1
  179. package/docs/variables/system.primaryKeyTypes.html +1 -1
  180. package/package.json +1 -1
@@ -1,4 +1,3 @@
1
- import serializerNameFromFullyQualifiedModelName from '../../serializer/helpers/serializerNameFromFullyQualifiedModelName.js';
2
1
  import camelize from '../camelize.js';
3
2
  import globalClassNameFromFullyQualifiedModelName from '../globalClassNameFromFullyQualifiedModelName.js';
4
3
  import absoluteDreamPath from '../path/absoluteDreamPath.js';
@@ -9,9 +8,18 @@ export default function generateSerializerContent({ fullyQualifiedModelName, col
9
8
  const additionalImports = [];
10
9
  const dreamImports = [];
11
10
  const isSTI = !!fullyQualifiedParentName;
11
+ // Variants that should be emitted in this file. Each variant generates a
12
+ // matching summary + default serializer pair; STI children import the
13
+ // corresponding variant from the parent module so the inheritance chain
14
+ // stays within the same variant (admin → admin, internal → internal).
15
+ const variantSuffixes = [''];
16
+ if (includeAdminSerializers)
17
+ variantSuffixes.push('Admin');
18
+ if (includeInternalSerializers)
19
+ variantSuffixes.push('Internal');
12
20
  if (isSTI) {
13
21
  fullyQualifiedParentName = standardizeFullyQualifiedModelName(fullyQualifiedParentName);
14
- additionalImports.push(importStatementForSerializer(fullyQualifiedModelName, fullyQualifiedParentName));
22
+ additionalImports.push(importStatementForSerializer(fullyQualifiedModelName, fullyQualifiedParentName, variantSuffixes));
15
23
  }
16
24
  else {
17
25
  dreamImports.push('DreamSerializer');
@@ -23,58 +31,50 @@ export default function generateSerializerContent({ fullyQualifiedModelName, col
23
31
  : `(${modelInstanceName}: ${modelClassName})`;
24
32
  const modelSerializerArgs = `${modelInstanceName}`;
25
33
  const dreamSerializerArgs = `${stiBaseSerializer ? `StiChildClass ?? ${modelClassName}` : modelClassName}, ${modelInstanceName}`;
26
- const serializerClassName = serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedModelName));
27
- const summarySerializerClassName = serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedModelName), 'summary');
28
- const defaultSerializerExtends = isSTI
29
- ? `${serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedParentName))}(${modelClassName}, ${modelSerializerArgs})`
30
- : `${summarySerializerClassName}(${stiBaseSerializer ? 'StiChildClass, ' : ''}${modelSerializerArgs})`;
31
- const summarySerializerExtends = isSTI
32
- ? `${serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedParentName), 'summary')}(${modelClassName}, ${modelSerializerArgs})`
33
- : `DreamSerializer(${dreamSerializerArgs})`;
34
- // Admin variants
35
- const adminSerializerClassName = serializerClassName.replace(/Serializer$/, 'AdminSerializer');
36
- const adminSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'AdminSummarySerializer');
37
- // end:Admin variants
38
- // Internal variants
39
- const internalSerializerClassName = serializerClassName.replace(/Serializer$/, 'InternalSerializer');
40
- const internalSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'InternalSummarySerializer');
41
- // end:Internal variants
34
+ const localSerializerBase = fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedModelName);
35
+ const parentSerializerBase = isSTI
36
+ ? fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedParentName)
37
+ : '';
42
38
  const additionalModelImports = [];
43
39
  const dreamImport = dreamImports.length
44
40
  ? `import { ${uniq(dreamImports).join(', ')} } from '@rvoh/dream'\n`
45
41
  : '';
46
42
  const additionalImportsStr = uniq(additionalImports).join('');
47
- const summarySerializer = `export const ${summarySerializerClassName} = ${modelSerializerSignature} =>
48
- ${summarySerializerExtends}${isSTI ? '' : `\n .attribute('id')`}`;
49
- const defaultSerializer = `export const ${serializerClassName} = ${modelSerializerSignature} =>
50
- ${defaultSerializerExtends}${columnsWithTypes
51
- .map(attr => {
52
- const [name, type] = attr.split(':');
53
- if (name === undefined)
54
- return '';
55
- if (['belongsto', 'hasone', 'hasmany'].includes(camelize(type)?.toLowerCase()))
56
- return '';
57
- return `\n ${attribute(modelClassName, name, type, attr, stiBaseSerializer)}`;
58
- })
59
- .join('')}`;
43
+ const buildSerializerPair = (variantSuffix) => {
44
+ const summaryName = variantSerializerClassName(localSerializerBase, variantSuffix, 'summary');
45
+ const defaultName = variantSerializerClassName(localSerializerBase, variantSuffix, 'default');
46
+ const summaryExtends = isSTI
47
+ ? `${variantSerializerClassName(parentSerializerBase, variantSuffix, 'summary')}(${modelClassName}, ${modelSerializerArgs})`
48
+ : `DreamSerializer(${dreamSerializerArgs})`;
49
+ const defaultExtends = isSTI
50
+ ? `${variantSerializerClassName(parentSerializerBase, variantSuffix, 'default')}(${modelClassName}, ${modelSerializerArgs})`
51
+ : `${summaryName}(${stiBaseSerializer ? 'StiChildClass, ' : ''}${modelSerializerArgs})`;
52
+ const summary = `export const ${summaryName} = ${modelSerializerSignature} =>
53
+ ${summaryExtends}${isSTI ? '' : `\n .attribute('id')`}`;
54
+ const defaultBody = columnsWithTypes
55
+ .map(attr => {
56
+ const [name, type] = attr.split(':');
57
+ if (name === undefined)
58
+ return '';
59
+ if (['belongsto', 'hasone', 'hasmany'].includes(camelize(type)?.toLowerCase()))
60
+ return '';
61
+ return `\n ${attribute(modelClassName, name, type, attr, stiBaseSerializer)}`;
62
+ })
63
+ .join('');
64
+ const def = `export const ${defaultName} = ${modelSerializerSignature} =>
65
+ ${defaultExtends}${defaultBody}`;
66
+ return `${summary}\n\n${def}`;
67
+ };
68
+ const serializerBlocks = variantSuffixes.map(buildSerializerPair).join('\n\n');
60
69
  return `${dreamImport}${additionalImportsStr}${relatedModelImport}${additionalModelImports.join('')}
61
- ${summarySerializer}
62
-
63
- ${defaultSerializer}${!includeAdminSerializers
64
- ? ''
65
- : `
66
-
67
- ${summarySerializer.replace(summarySerializerClassName, adminSummarySerializerClassName)}
68
-
69
- ${defaultSerializer.replace(serializerClassName, adminSerializerClassName).replace(summarySerializerClassName, adminSummarySerializerClassName)}`}${!includeInternalSerializers
70
- ? ''
71
- : `
72
-
73
- ${summarySerializer.replace(summarySerializerClassName, internalSummarySerializerClassName)}
74
-
75
- ${defaultSerializer.replace(serializerClassName, internalSerializerClassName).replace(summarySerializerClassName, internalSummarySerializerClassName)}`}
70
+ ${serializerBlocks}
76
71
  `;
77
72
  }
73
+ function variantSerializerClassName(serializerBase, variantSuffix, kind) {
74
+ return kind === 'summary'
75
+ ? `${serializerBase}${variantSuffix}SummarySerializer`
76
+ : `${serializerBase}${variantSuffix}Serializer`;
77
+ }
78
78
  function attribute(modelClassName, name, type, attr, stiBaseSerializer) {
79
79
  if (name === 'type' && stiBaseSerializer) {
80
80
  return `.attribute('type', { openapi: { type: 'string', enum: [(StiChildClass ?? ${modelClassName}).sanitizedName] } })`;
@@ -97,11 +97,14 @@ function attributeOptionsSpecifier(type, attr) {
97
97
  return '';
98
98
  }
99
99
  }
100
- function importStatementForSerializer(originModelName, destinationModelName) {
101
- const defaultSerializer = globalClassNameFromFullyQualifiedModelName(serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(destinationModelName)));
102
- const summarySerializer = globalClassNameFromFullyQualifiedModelName(serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(destinationModelName), 'summary'));
100
+ function importStatementForSerializer(originModelName, destinationModelName, variantSuffixes) {
101
+ const base = fullyQualifiedModelNameToSerializerBaseName(destinationModelName);
102
+ const names = variantSuffixes.flatMap(suffix => [
103
+ globalClassNameFromFullyQualifiedModelName(variantSerializerClassName(base, suffix, 'default')),
104
+ globalClassNameFromFullyQualifiedModelName(variantSerializerClassName(base, suffix, 'summary')),
105
+ ]);
103
106
  const importFrom = absoluteDreamPath('serializers', destinationModelName);
104
- return `import { ${defaultSerializer}, ${summarySerializer} } from '${importFrom}'\n`;
107
+ return `import { ${names.join(', ')} } from '${importFrom}'\n`;
105
108
  }
106
109
  function importStatementForModel(modelClassName, fullyQualifiedModelName) {
107
110
  const importFrom = absoluteDreamPath('models', fullyQualifiedModelName);
@@ -1,4 +1,3 @@
1
- import serializerNameFromFullyQualifiedModelName from '../../serializer/helpers/serializerNameFromFullyQualifiedModelName.js';
2
1
  import camelize from '../camelize.js';
3
2
  import globalClassNameFromFullyQualifiedModelName from '../globalClassNameFromFullyQualifiedModelName.js';
4
3
  import absoluteDreamPath from '../path/absoluteDreamPath.js';
@@ -9,9 +8,18 @@ export default function generateSerializerContent({ fullyQualifiedModelName, col
9
8
  const additionalImports = [];
10
9
  const dreamImports = [];
11
10
  const isSTI = !!fullyQualifiedParentName;
11
+ // Variants that should be emitted in this file. Each variant generates a
12
+ // matching summary + default serializer pair; STI children import the
13
+ // corresponding variant from the parent module so the inheritance chain
14
+ // stays within the same variant (admin → admin, internal → internal).
15
+ const variantSuffixes = [''];
16
+ if (includeAdminSerializers)
17
+ variantSuffixes.push('Admin');
18
+ if (includeInternalSerializers)
19
+ variantSuffixes.push('Internal');
12
20
  if (isSTI) {
13
21
  fullyQualifiedParentName = standardizeFullyQualifiedModelName(fullyQualifiedParentName);
14
- additionalImports.push(importStatementForSerializer(fullyQualifiedModelName, fullyQualifiedParentName));
22
+ additionalImports.push(importStatementForSerializer(fullyQualifiedModelName, fullyQualifiedParentName, variantSuffixes));
15
23
  }
16
24
  else {
17
25
  dreamImports.push('DreamSerializer');
@@ -23,58 +31,50 @@ export default function generateSerializerContent({ fullyQualifiedModelName, col
23
31
  : `(${modelInstanceName}: ${modelClassName})`;
24
32
  const modelSerializerArgs = `${modelInstanceName}`;
25
33
  const dreamSerializerArgs = `${stiBaseSerializer ? `StiChildClass ?? ${modelClassName}` : modelClassName}, ${modelInstanceName}`;
26
- const serializerClassName = serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedModelName));
27
- const summarySerializerClassName = serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedModelName), 'summary');
28
- const defaultSerializerExtends = isSTI
29
- ? `${serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedParentName))}(${modelClassName}, ${modelSerializerArgs})`
30
- : `${summarySerializerClassName}(${stiBaseSerializer ? 'StiChildClass, ' : ''}${modelSerializerArgs})`;
31
- const summarySerializerExtends = isSTI
32
- ? `${serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedParentName), 'summary')}(${modelClassName}, ${modelSerializerArgs})`
33
- : `DreamSerializer(${dreamSerializerArgs})`;
34
- // Admin variants
35
- const adminSerializerClassName = serializerClassName.replace(/Serializer$/, 'AdminSerializer');
36
- const adminSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'AdminSummarySerializer');
37
- // end:Admin variants
38
- // Internal variants
39
- const internalSerializerClassName = serializerClassName.replace(/Serializer$/, 'InternalSerializer');
40
- const internalSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'InternalSummarySerializer');
41
- // end:Internal variants
34
+ const localSerializerBase = fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedModelName);
35
+ const parentSerializerBase = isSTI
36
+ ? fullyQualifiedModelNameToSerializerBaseName(fullyQualifiedParentName)
37
+ : '';
42
38
  const additionalModelImports = [];
43
39
  const dreamImport = dreamImports.length
44
40
  ? `import { ${uniq(dreamImports).join(', ')} } from '@rvoh/dream'\n`
45
41
  : '';
46
42
  const additionalImportsStr = uniq(additionalImports).join('');
47
- const summarySerializer = `export const ${summarySerializerClassName} = ${modelSerializerSignature} =>
48
- ${summarySerializerExtends}${isSTI ? '' : `\n .attribute('id')`}`;
49
- const defaultSerializer = `export const ${serializerClassName} = ${modelSerializerSignature} =>
50
- ${defaultSerializerExtends}${columnsWithTypes
51
- .map(attr => {
52
- const [name, type] = attr.split(':');
53
- if (name === undefined)
54
- return '';
55
- if (['belongsto', 'hasone', 'hasmany'].includes(camelize(type)?.toLowerCase()))
56
- return '';
57
- return `\n ${attribute(modelClassName, name, type, attr, stiBaseSerializer)}`;
58
- })
59
- .join('')}`;
43
+ const buildSerializerPair = (variantSuffix) => {
44
+ const summaryName = variantSerializerClassName(localSerializerBase, variantSuffix, 'summary');
45
+ const defaultName = variantSerializerClassName(localSerializerBase, variantSuffix, 'default');
46
+ const summaryExtends = isSTI
47
+ ? `${variantSerializerClassName(parentSerializerBase, variantSuffix, 'summary')}(${modelClassName}, ${modelSerializerArgs})`
48
+ : `DreamSerializer(${dreamSerializerArgs})`;
49
+ const defaultExtends = isSTI
50
+ ? `${variantSerializerClassName(parentSerializerBase, variantSuffix, 'default')}(${modelClassName}, ${modelSerializerArgs})`
51
+ : `${summaryName}(${stiBaseSerializer ? 'StiChildClass, ' : ''}${modelSerializerArgs})`;
52
+ const summary = `export const ${summaryName} = ${modelSerializerSignature} =>
53
+ ${summaryExtends}${isSTI ? '' : `\n .attribute('id')`}`;
54
+ const defaultBody = columnsWithTypes
55
+ .map(attr => {
56
+ const [name, type] = attr.split(':');
57
+ if (name === undefined)
58
+ return '';
59
+ if (['belongsto', 'hasone', 'hasmany'].includes(camelize(type)?.toLowerCase()))
60
+ return '';
61
+ return `\n ${attribute(modelClassName, name, type, attr, stiBaseSerializer)}`;
62
+ })
63
+ .join('');
64
+ const def = `export const ${defaultName} = ${modelSerializerSignature} =>
65
+ ${defaultExtends}${defaultBody}`;
66
+ return `${summary}\n\n${def}`;
67
+ };
68
+ const serializerBlocks = variantSuffixes.map(buildSerializerPair).join('\n\n');
60
69
  return `${dreamImport}${additionalImportsStr}${relatedModelImport}${additionalModelImports.join('')}
61
- ${summarySerializer}
62
-
63
- ${defaultSerializer}${!includeAdminSerializers
64
- ? ''
65
- : `
66
-
67
- ${summarySerializer.replace(summarySerializerClassName, adminSummarySerializerClassName)}
68
-
69
- ${defaultSerializer.replace(serializerClassName, adminSerializerClassName).replace(summarySerializerClassName, adminSummarySerializerClassName)}`}${!includeInternalSerializers
70
- ? ''
71
- : `
72
-
73
- ${summarySerializer.replace(summarySerializerClassName, internalSummarySerializerClassName)}
74
-
75
- ${defaultSerializer.replace(serializerClassName, internalSerializerClassName).replace(summarySerializerClassName, internalSummarySerializerClassName)}`}
70
+ ${serializerBlocks}
76
71
  `;
77
72
  }
73
+ function variantSerializerClassName(serializerBase, variantSuffix, kind) {
74
+ return kind === 'summary'
75
+ ? `${serializerBase}${variantSuffix}SummarySerializer`
76
+ : `${serializerBase}${variantSuffix}Serializer`;
77
+ }
78
78
  function attribute(modelClassName, name, type, attr, stiBaseSerializer) {
79
79
  if (name === 'type' && stiBaseSerializer) {
80
80
  return `.attribute('type', { openapi: { type: 'string', enum: [(StiChildClass ?? ${modelClassName}).sanitizedName] } })`;
@@ -97,11 +97,14 @@ function attributeOptionsSpecifier(type, attr) {
97
97
  return '';
98
98
  }
99
99
  }
100
- function importStatementForSerializer(originModelName, destinationModelName) {
101
- const defaultSerializer = globalClassNameFromFullyQualifiedModelName(serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(destinationModelName)));
102
- const summarySerializer = globalClassNameFromFullyQualifiedModelName(serializerNameFromFullyQualifiedModelName(fullyQualifiedModelNameToSerializerBaseName(destinationModelName), 'summary'));
100
+ function importStatementForSerializer(originModelName, destinationModelName, variantSuffixes) {
101
+ const base = fullyQualifiedModelNameToSerializerBaseName(destinationModelName);
102
+ const names = variantSuffixes.flatMap(suffix => [
103
+ globalClassNameFromFullyQualifiedModelName(variantSerializerClassName(base, suffix, 'default')),
104
+ globalClassNameFromFullyQualifiedModelName(variantSerializerClassName(base, suffix, 'summary')),
105
+ ]);
103
106
  const importFrom = absoluteDreamPath('serializers', destinationModelName);
104
- return `import { ${defaultSerializer}, ${summarySerializer} } from '${importFrom}'\n`;
107
+ return `import { ${names.join(', ')} } from '${importFrom}'\n`;
105
108
  }
106
109
  function importStatementForModel(modelClassName, fullyQualifiedModelName) {
107
110
  const importFrom = absoluteDreamPath('models', fullyQualifiedModelName);
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>DreamMigrationHelpers | @rvoh/dream</title><meta name="description" content="Documentation for @rvoh/dream"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@rvoh/dream</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/db.html">db</a></li><li><a href="" aria-current="page">DreamMigrationHelpers</a></li></ul><h1>Class DreamMigrationHelpers</h1></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L3">src/db/migration-helpers/DreamMigrationHelpers.ts:3</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>DreamMigrationHelpers | @rvoh/dream</title><meta name="description" content="Documentation for @rvoh/dream"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@rvoh/dream</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/db.html">db</a></li><li><a href="" aria-current="page">DreamMigrationHelpers</a></li></ul><h1>Class DreamMigrationHelpers</h1></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L3">src/db/migration-helpers/DreamMigrationHelpers.ts:3</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
2
2
  </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="#adddeferrableuniqueconstraint" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Deferrable<wbr/>Unique<wbr/>Constraint</span></a>
3
3
  <a href="#addenumvalue" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Enum<wbr/>Value</span></a>
4
4
  <a href="#createextension" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Extension</span></a>
@@ -16,13 +16,13 @@ indexes.</p>
16
16
  </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">columns</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span></span><div class="tsd-comment tsd-typography"><p>Configuration options</p>
17
17
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">columns</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5><div class="tsd-comment tsd-typography"><p>The names of the columns to include in the constraint</p>
18
18
  </div></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><p>The name of the table</p>
19
- </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L48">src/db/migration-helpers/DreamMigrationHelpers.ts:48</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="addenumvalue"><code class="tsd-tag">Static</code><span>add<wbr/>Enum<wbr/>Value</span><a href="#addenumvalue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="addenumvalue-1"><span class="tsd-kind-call-signature">addEnumValue</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">__namedParameters</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">AddValueToEnumOpts</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#addenumvalue-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Add a value to an enum.</p>
19
+ </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L48">src/db/migration-helpers/DreamMigrationHelpers.ts:48</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="addenumvalue"><code class="tsd-tag">Static</code><span>add<wbr/>Enum<wbr/>Value</span><a href="#addenumvalue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="addenumvalue-1"><span class="tsd-kind-call-signature">addEnumValue</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">__namedParameters</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">AddValueToEnumOpts</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#addenumvalue-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Add a value to an enum.</p>
20
20
  <p>Note that this always includes &quot;IF NOT EXISTS&quot;, so is safe to re-run multiple times.</p>
21
21
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">db</span>: <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>The Kysely database object passed into the migration up/down function</p>
22
22
  </div></li><li><span><span class="tsd-kind-parameter">__namedParameters</span>: <span class="tsd-signature-type">AddValueToEnumOpts</span></span><div class="tsd-comment tsd-typography"><p>The options for adding the enum value</p>
23
23
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span>enumName</span></h5><div class="tsd-comment tsd-typography"><p>The name of the enum to modify</p>
24
24
  </div></li><li class="tsd-parameter"><h5><span>value</span></h5><div class="tsd-comment tsd-typography"><p>The name of the value to add to the enum</p>
25
- </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L78">src/db/migration-helpers/DreamMigrationHelpers.ts:78</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="createextension"><code class="tsd-tag">Static</code><span>create<wbr/>Extension</span><a href="#createextension" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="createextension-1"><span class="tsd-kind-call-signature">createExtension</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">extensionName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">ifNotExists</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">publicSchema</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#createextension-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Create a database extension.</p>
25
+ </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L78">src/db/migration-helpers/DreamMigrationHelpers.ts:78</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="createextension"><code class="tsd-tag">Static</code><span>create<wbr/>Extension</span><a href="#createextension" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="createextension-1"><span class="tsd-kind-call-signature">createExtension</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">extensionName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">ifNotExists</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">publicSchema</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#createextension-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Create a database extension.</p>
26
26
  <pre><code><span class="hl-1"> </span><span class="hl-7">// Add the case insensitive extension</span><br/><span class="hl-1"> </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">DreamMigrationHelpers</span><span class="hl-1">.</span><span class="hl-5">createExtension</span><span class="hl-1">(</span><span class="hl-4">db</span><span class="hl-1">, </span><span class="hl-6">&#39;citext&#39;</span><span class="hl-1">)</span><br/><br/><span class="hl-1"> </span><span class="hl-7">// Add the pg trigram extension</span><br/><span class="hl-1"> </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">DreamMigrationHelpers</span><span class="hl-1">.</span><span class="hl-5">createExtension</span><span class="hl-1">(</span><span class="hl-4">db</span><span class="hl-1">, </span><span class="hl-6">&#39;pg_trgm&#39;</span><span class="hl-1">)</span>
27
27
  </code><button>Copy</button></pre>
28
28
 
@@ -31,26 +31,26 @@ indexes.</p>
31
31
  </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">ifNotExists</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">publicSchema</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol"> = {}</span></span><div class="tsd-comment tsd-typography"><p>Configuration options</p>
32
32
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><code class="tsd-tag">Optional</code><span class="tsd-kind-property">ifNotExists</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>Only add the extension if it doesn't already exist</p>
33
33
  </div></li><li class="tsd-parameter"><h5><code class="tsd-tag">Optional</code><span class="tsd-kind-property">publicSchema</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>Create using the public schema</p>
34
- </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L100">src/db/migration-helpers/DreamMigrationHelpers.ts:100</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="createginindex"><code class="tsd-tag">Static</code><span>create<wbr/>Gin<wbr/>Index</span><a href="#createginindex" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="createginindex-1"><span class="tsd-kind-call-signature">createGinIndex</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">indexName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">column</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#createginindex-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Create a gin index</p>
34
+ </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L100">src/db/migration-helpers/DreamMigrationHelpers.ts:100</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="createginindex"><code class="tsd-tag">Static</code><span>create<wbr/>Gin<wbr/>Index</span><a href="#createginindex" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="createginindex-1"><span class="tsd-kind-call-signature">createGinIndex</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">indexName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">column</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#createginindex-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Create a gin index</p>
35
35
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">db</span>: <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>The Kysely database object passed into the migration up/down function</p>
36
36
  </div></li><li><span><span class="tsd-kind-parameter">indexName</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The name of the constraint to create</p>
37
37
  </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">column</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span></span><div class="tsd-comment tsd-typography"><p>Configuration options</p>
38
38
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">column</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><p>The name of the column to index</p>
39
39
  </div></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><p>The name of the table</p>
40
- </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L122">src/db/migration-helpers/DreamMigrationHelpers.ts:122</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="dropconstraint"><code class="tsd-tag">Static</code><span>drop<wbr/>Constraint</span><a href="#dropconstraint" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="dropconstraint-1"><span class="tsd-kind-call-signature">dropConstraint</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">constraintName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#dropconstraint-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Drop a constraint</p>
40
+ </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L122">src/db/migration-helpers/DreamMigrationHelpers.ts:122</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="dropconstraint"><code class="tsd-tag">Static</code><span>drop<wbr/>Constraint</span><a href="#dropconstraint" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="dropconstraint-1"><span class="tsd-kind-call-signature">dropConstraint</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">constraintName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#dropconstraint-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Drop a constraint</p>
41
41
  <p>Note that this always includes &quot;IF NOT EXISTS&quot;, so is safe to re-run multiple times.</p>
42
42
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">db</span>: <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>The Kysely database object passed into the migration up/down function</p>
43
43
  </div></li><li><span><span class="tsd-kind-parameter">constraintName</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The name of the constraint to create</p>
44
44
  </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span></span><div class="tsd-comment tsd-typography"><p>Configuration options</p>
45
45
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><p>The name of the table</p>
46
- </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L145">src/db/migration-helpers/DreamMigrationHelpers.ts:145</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="dropenumvalue"><code class="tsd-tag">Static</code><span>drop<wbr/>Enum<wbr/>Value</span><a href="#dropenumvalue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="dropenumvalue-1"><span class="tsd-kind-call-signature">dropEnumValue</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">__namedParameters</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">DropValueFromEnumOpts</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#dropenumvalue-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Drop a value from an enum and replace it with a different enum already
46
+ </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L145">src/db/migration-helpers/DreamMigrationHelpers.ts:145</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="dropenumvalue"><code class="tsd-tag">Static</code><span>drop<wbr/>Enum<wbr/>Value</span><a href="#dropenumvalue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="dropenumvalue-1"><span class="tsd-kind-call-signature">dropEnumValue</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">__namedParameters</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">DropValueFromEnumOpts</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#dropenumvalue-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Drop a value from an enum and replace it with a different enum already
47
47
  present in the enum type (or optionally remove it from array columns).</p>
48
48
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">db</span>: <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>The Kysely database object passed into the migration up/down function</p>
49
49
  </div></li><li><span><span class="tsd-kind-parameter">__namedParameters</span>: <span class="tsd-signature-type">DropValueFromEnumOpts</span></span><div class="tsd-comment tsd-typography"><p>The options for dropping the enum value</p>
50
50
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span>enumName</span></h5><div class="tsd-comment tsd-typography"><p>The name of the enum to modify</p>
51
51
  </div></li><li class="tsd-parameter"><h5><span>value</span></h5><div class="tsd-comment tsd-typography"><p>The name of the value to drop from the enum</p>
52
52
  </div></li><li class="tsd-parameter"><h5><span>replacements</span></h5><div class="tsd-comment tsd-typography"><p>Details about which table and column to change and which value to replace the dropped value with (or remove it if the column is an array)</p>
53
- </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L198">src/db/migration-helpers/DreamMigrationHelpers.ts:198</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="newtransaction"><code class="tsd-tag">Static</code><span>new<wbr/>Transaction</span><a href="#newtransaction" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="newtransaction-1"><span class="tsd-kind-call-signature">newTransaction</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#newtransaction-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Forces a new transaction boundary in migration execution.</p>
53
+ </div></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L198">src/db/migration-helpers/DreamMigrationHelpers.ts:198</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="newtransaction"><code class="tsd-tag">Static</code><span>new<wbr/>Transaction</span><a href="#newtransaction" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="newtransaction-1"><span class="tsd-kind-call-signature">newTransaction</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#newtransaction-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Forces a new transaction boundary in migration execution.</p>
54
54
  <p>When called in a migration file, this method ensures that any existing transaction
55
55
  is committed before this migration runs, and a new transaction is started before the
56
56
  migration in this file. This is essential for migrations that depend on previously
@@ -61,7 +61,7 @@ enum values to be committed to the database first.</p>
61
61
  <pre><code class="ts"><span class="hl-7">// first migration file: Add enum value</span><br/><span class="hl-3">export</span><span class="hl-1"> </span><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-5">up</span><span class="hl-1">(</span><span class="hl-4">db</span><span class="hl-1">: </span><span class="hl-9">Kysely</span><span class="hl-1">&lt;</span><span class="hl-9">any</span><span class="hl-1">&gt;): </span><span class="hl-9">Promise</span><span class="hl-1">&lt;</span><span class="hl-9">void</span><span class="hl-1">&gt; {</span><br/><span class="hl-1"> </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">DreamMigrationHelpers</span><span class="hl-1">.</span><span class="hl-5">addEnumValue</span><span class="hl-1">(</span><span class="hl-4">db</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">enumName:</span><span class="hl-1"> </span><span class="hl-6">&#39;user_status&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">value:</span><span class="hl-1"> </span><span class="hl-6">&#39;premium&#39;</span><br/><span class="hl-1"> })</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">// second migration file: Add check constraint that depends on the enum value</span><br/><span class="hl-3">export</span><span class="hl-1"> </span><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-5">up</span><span class="hl-1">(</span><span class="hl-4">db</span><span class="hl-1">: </span><span class="hl-9">Kysely</span><span class="hl-1">&lt;</span><span class="hl-9">any</span><span class="hl-1">&gt;): </span><span class="hl-9">Promise</span><span class="hl-1">&lt;</span><span class="hl-9">void</span><span class="hl-1">&gt; {</span><br/><span class="hl-1"> </span><span class="hl-4">DreamMigrationHelpers</span><span class="hl-1">.</span><span class="hl-5">newTransaction</span><span class="hl-1">() </span><span class="hl-7">// Ensure enum value is committed first</span><br/><br/><span class="hl-1"> </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">db</span><span class="hl-1">.</span><span class="hl-4">schema</span><br/><span class="hl-1"> .</span><span class="hl-5">alterTable</span><span class="hl-1">(</span><span class="hl-6">&#39;users&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-5">addCheckConstraint</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-6">&#39;check_premium_users&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">sql</span><span class="hl-6">`status = &#39;premium&#39; OR credits &lt; 100`</span><br/><span class="hl-1"> )</span><br/><span class="hl-1"> .</span><span class="hl-5">execute</span><span class="hl-1">()</span><br/><span class="hl-1">}</span>
62
62
  </code><button type="button">Copy</button></pre>
63
63
 
64
- </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L186">src/db/migration-helpers/DreamMigrationHelpers.ts:186</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="renametable"><code class="tsd-tag">Static</code><span>rename<wbr/>Table</span><a href="#renametable" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="renametable-1"><span class="tsd-kind-call-signature">renameTable</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">from</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">to</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#renametable-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Rename a table and its associated primary key index and sequence.</p>
64
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L186">src/db/migration-helpers/DreamMigrationHelpers.ts:186</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="renametable"><code class="tsd-tag">Static</code><span>rename<wbr/>Table</span><a href="#renametable" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="renametable-1"><span class="tsd-kind-call-signature">renameTable</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">from</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">to</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#renametable-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Rename a table and its associated primary key index and sequence.</p>
65
65
  <p>This method renames the table, its primary key index (<code>{tablename}_pkey</code>),
66
66
  and its primary key sequence (<code>{tablename}_id_seq</code>) to keep them in sync.</p>
67
67
  <p>The sequence rename is skipped for tables with UUID primary keys (which have
@@ -70,4 +70,4 @@ PostgreSQL does not automatically rename it when the table is renamed.</p>
70
70
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">db</span>: <span class="tsd-signature-type">Kysely</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>The Kysely database object passed into the migration up/down function</p>
71
71
  </div></li><li><span><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The current name of the table to rename</p>
72
72
  </div></li><li><span><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The new name for the table</p>
73
- </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/264d229f8f9ea6a7b5d9b43bb11f453d55a940fd/src/db/migration-helpers/DreamMigrationHelpers.ts#L18">src/db/migration-helpers/DreamMigrationHelpers.ts:18</a></li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#adddeferrableuniqueconstraint"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Deferrable<wbr/>Unique<wbr/>Constraint</span></a><a href="#addenumvalue"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Enum<wbr/>Value</span></a><a href="#createextension"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Extension</span></a><a href="#createginindex"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Gin<wbr/>Index</span></a><a href="#dropconstraint"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>drop<wbr/>Constraint</span></a><a href="#dropenumvalue"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>drop<wbr/>Enum<wbr/>Value</span></a><a href="#newtransaction"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>new<wbr/>Transaction</span></a><a href="#renametable"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>rename<wbr/>Table</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@rvoh/dream</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
73
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/2121f29668feb68e1e775bf7d720265495fc1198/src/db/migration-helpers/DreamMigrationHelpers.ts#L18">src/db/migration-helpers/DreamMigrationHelpers.ts:18</a></li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#adddeferrableuniqueconstraint"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Deferrable<wbr/>Unique<wbr/>Constraint</span></a><a href="#addenumvalue"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Enum<wbr/>Value</span></a><a href="#createextension"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Extension</span></a><a href="#createginindex"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Gin<wbr/>Index</span></a><a href="#dropconstraint"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>drop<wbr/>Constraint</span></a><a href="#dropenumvalue"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>drop<wbr/>Enum<wbr/>Value</span></a><a href="#newtransaction"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>new<wbr/>Transaction</span></a><a href="#renametable"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>rename<wbr/>Table</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@rvoh/dream</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>