1
0
Fork 0
mirror of synced 2024-09-20 11:27:56 +12:00

Process primitive default values.

This commit is contained in:
Sam Rose 2024-07-15 10:43:58 +01:00
parent 43de204ca2
commit 12911db06e
No known key found for this signature in database
3 changed files with 25 additions and 5 deletions

View file

@ -207,7 +207,7 @@ describe.each([
await assertRowUsage(isInternal ? rowUsage + 1 : rowUsage) await assertRowUsage(isInternal ? rowUsage + 1 : rowUsage)
}) })
it("creates a new row with a default value successfully", async () => { it.only("creates a new row with a default value successfully", async () => {
const table = await config.api.table.save( const table = await config.api.table.save(
saveTableRequest({ saveTableRequest({
schema: { schema: {
@ -221,7 +221,6 @@ describe.each([
) )
const row = await config.api.row.save(table._id!, {}) const row = await config.api.row.save(table._id!, {})
expect(row.name).toEqual("Test Contact")
expect(row.description).toEqual("default description") expect(row.description).toEqual("default description")
}) })

View file

@ -88,7 +88,14 @@ export async function processAutoColumn(
break break
} }
} }
return { table, row } }
async function processDeafultValues(table: Table, row: Row) {
for (let [key, schema] of Object.entries(table.schema)) {
if ("default" in schema && row[key] == null) {
row[key] = schema.default
}
}
} }
/** /**
@ -182,8 +189,10 @@ export async function inputProcessing(
clonedRow._rev = row._rev clonedRow._rev = row._rev
} }
// handle auto columns - this returns an object like {table, row} await processAutoColumn(userId, table, clonedRow, opts)
return processAutoColumn(userId, table, clonedRow, opts) await processDeafultValues(table, clonedRow)
return { table, row: clonedRow }
} }
/** /**

View file

@ -81,11 +81,13 @@ export interface NumberFieldMetadata extends Omit<BaseFieldSchema, "subtype"> {
toTable: string toTable: string
toKey: string toKey: string
} }
default?: string
} }
export interface JsonFieldMetadata extends Omit<BaseFieldSchema, "subtype"> { export interface JsonFieldMetadata extends Omit<BaseFieldSchema, "subtype"> {
type: FieldType.JSON type: FieldType.JSON
subtype?: JsonFieldSubType.ARRAY subtype?: JsonFieldSubType.ARRAY
default?: string
} }
export interface DateFieldMetadata extends Omit<BaseFieldSchema, "subtype"> { export interface DateFieldMetadata extends Omit<BaseFieldSchema, "subtype"> {
@ -94,17 +96,25 @@ export interface DateFieldMetadata extends Omit<BaseFieldSchema, "subtype"> {
timeOnly?: boolean timeOnly?: boolean
dateOnly?: boolean dateOnly?: boolean
subtype?: AutoFieldSubType.CREATED_AT | AutoFieldSubType.UPDATED_AT subtype?: AutoFieldSubType.CREATED_AT | AutoFieldSubType.UPDATED_AT
default?: string
} }
export interface LongFormFieldMetadata extends BaseFieldSchema { export interface LongFormFieldMetadata extends BaseFieldSchema {
type: FieldType.LONGFORM type: FieldType.LONGFORM
useRichText?: boolean | null useRichText?: boolean | null
default?: string
}
export interface StringFieldMetadata extends BaseFieldSchema {
type: FieldType.STRING
default?: string
} }
export interface FormulaFieldMetadata extends BaseFieldSchema { export interface FormulaFieldMetadata extends BaseFieldSchema {
type: FieldType.FORMULA type: FieldType.FORMULA
formula: string formula: string
formulaType?: FormulaType formulaType?: FormulaType
default?: string
} }
export interface BBReferenceFieldMetadata export interface BBReferenceFieldMetadata
@ -171,6 +181,7 @@ interface OtherFieldMetadata extends BaseFieldSchema {
| FieldType.BB_REFERENCE | FieldType.BB_REFERENCE
| FieldType.BB_REFERENCE_SINGLE | FieldType.BB_REFERENCE_SINGLE
| FieldType.ATTACHMENTS | FieldType.ATTACHMENTS
| FieldType.STRING
> >
} }
@ -182,6 +193,7 @@ export type FieldSchema =
| FormulaFieldMetadata | FormulaFieldMetadata
| NumberFieldMetadata | NumberFieldMetadata
| LongFormFieldMetadata | LongFormFieldMetadata
| StringFieldMetadata
| BBReferenceFieldMetadata | BBReferenceFieldMetadata
| JsonFieldMetadata | JsonFieldMetadata
| AttachmentFieldMetadata | AttachmentFieldMetadata