repo_description: 🍉 Reactive & asynchronous database for powerful React and React Native apps ⚡️
repo_topics: database hacktoberfest persistence react react-native reactive rxjs
code: import type { ColumnName, ColumnSchema, TableSchema } from '../Schema'
  import type { RecordId, SyncStatus } from '../Model'
  
  // Raw object representing a model record, coming from an untrusted source
  // (disk, sync, user data). Before it can be used to create a Model instance
  // it must be sanitized (with `sanitizedRaw`) into a RawRecord
  export type DirtyRaw = { [key: string]: any }
  
  // These fields are ALWAYS present in records of any collection.
  type _RawRecord = {
    id: RecordId
    _status: SyncStatus
    _changed: string
  }
  
  // Raw object representing a model record. A RawRecord is guaranteed by the type system
  // to be safe to use (sanitied with `sanitizedRaw`):
  // - it has exactly the fields described by TableSchema (+ standard fields)
  // - every field is exactly the type described by ColumnSchema (string, number, or boolean)
  // - … and the same optionality (will not be null unless isOptional: true)
  export type RawRecord = _RawRecord
  
  // Transforms a dirty raw record object into a trusted sanitized RawRecord according to passed TableSchema
  export function sanitizedRaw(dirtyRaw: DirtyRaw, tableSchema: TableSchema): RawRecord
  
  // Modifies passed rawRecord by setting sanitized `value` to `columnName`
  // Note: Assumes columnName exists and columnSchema matches the name
  export function setRawSanitized(
    rawRecord: RawRecord,
    columnName: ColumnName,
    value: any,
    columnSchema: ColumnSchema,
  ): void
  
  export type NullValue = null | '' | 0 | false
  
  export function nullValue(columnSchema: ColumnSchema): NullValue
  