MCPcopy
hub / github.com/remix-run/remix / create

Method create

packages/data-table/src/lib/database.ts:410–468  ·  view source on GitHub ↗
(
    table: table,
    values: Partial<TableRow<table>>,
    options?: CreateResultOptions | CreateRowOptions<table, relations>,
  )

Source from the content-addressed store, hash-verified

408 options: CreateRowOptions<table, relations>,
409 ): Promise<TableRowWith<table, LoadedRelationMap<relations>>>
410 async create<
411 table extends AnyTable,
412 relations extends RelationMapForSourceName<TableName<table>> = {},
413 >(
414 table: table,
415 values: Partial<TableRow<table>>,
416 options?: CreateResultOptions | CreateRowOptions<table, relations>,
417 ): Promise<WriteResult | TableRowWith<table, LoadedRelationMap<relations>>> {
418 let touch = options?.touch
419 let query: QueryForTable<table> = this.query(asQueryTableInput(table))
420
421 if (options?.returnRow !== true) {
422 let result = await query.insert(values, { touch })
423 return toWriteResult(result)
424 }
425
426 if (this.#adapter.capabilities.returning) {
427 let result = (await query.insert(values, {
428 returning: '*',
429 touch,
430 })) as { row: TableRow<table> | null }
431 let row = result.row
432
433 if (!row) {
434 throw new DataTableQueryError(
435 'create({ returnRow: true }) failed to return an inserted row',
436 )
437 }
438
439 if (!options.with) {
440 return row as TableRowWith<table, LoadedRelationMap<relations>>
441 }
442
443 let where = getPrimaryKeyWhereFromRow(table, row)
444 let loaded = await this.findOne(table, {
445 where,
446 with: options.with,
447 })
448
449 if (!loaded) {
450 throw new DataTableQueryError('create({ returnRow: true }) failed to load inserted row')
451 }
452
453 return loaded
454 }
455
456 let insertResult = await query.insert(values, { touch })
457 let where = resolveCreateRowWhere(table, values, toWriteResult(insertResult).insertId)
458 let loaded = await this.findOne(table, {
459 where,
460 with: options.with,
461 })
462
463 if (!loaded) {
464 throw new DataTableQueryError('create({ returnRow: true }) failed to load inserted row')
465 }
466
467 return loaded

Callers 15

adapter.test.tsFile · 0.80
database.test.tsFile · 0.80
tableFunction · 0.80
writeIstanbulReportsFunction · 0.80
assert.test.tsFile · 0.80
parseMultipartHeadersFunction · 0.80
actionFunction · 0.80

Calls 7

queryMethod · 0.95
findOneMethod · 0.95
asQueryTableInputFunction · 0.90
toWriteResultFunction · 0.90
resolveCreateRowWhereFunction · 0.90
insertMethod · 0.65

Tested by 1

createUserFunction · 0.64