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

Function createPredicateColumnResolver

packages/data-table/src/lib/query.ts:880–939  ·  view source on GitHub ↗
(
  tables: AnyTable[],
)

Source from the content-addressed store, hash-verified

878}
879
880function createPredicateColumnResolver(
881 tables: AnyTable[],
882): (column: string) => ResolvedPredicateColumn {
883 let qualifiedColumns = new Map<string, ResolvedPredicateColumn>()
884 let unqualifiedColumns = new Map<string, ResolvedPredicateColumn>()
885 let ambiguousColumns = new Set<string>()
886
887 for (let table of tables) {
888 let tableColumns = getTableColumns(table)
889 let tableName = getTableName(table)
890
891 for (let columnName in tableColumns) {
892 if (!Object.prototype.hasOwnProperty.call(tableColumns, columnName)) {
893 continue
894 }
895
896 let resolvedColumn: ResolvedPredicateColumn = {
897 tableName,
898 columnName,
899 }
900
901 qualifiedColumns.set(tableName + '.' + columnName, resolvedColumn)
902
903 if (ambiguousColumns.has(columnName)) {
904 continue
905 }
906
907 if (unqualifiedColumns.has(columnName)) {
908 unqualifiedColumns.delete(columnName)
909 ambiguousColumns.add(columnName)
910 continue
911 }
912
913 unqualifiedColumns.set(columnName, resolvedColumn)
914 }
915 }
916
917 return function resolveColumn(column: string): ResolvedPredicateColumn {
918 let qualified = qualifiedColumns.get(column)
919 if (qualified) return qualified
920
921 if (column.includes('.')) {
922 throw new DataTableQueryError('Unknown predicate column "' + column + '"')
923 }
924
925 if (ambiguousColumns.has(column)) {
926 throw new DataTableQueryError(
927 'Ambiguous predicate column "' + column + '". Use a qualified column name',
928 )
929 }
930
931 let unqualified = unqualifiedColumns.get(column)
932
933 if (!unqualified) {
934 throw new DataTableQueryError('Unknown predicate column "' + column + '"')
935 }
936
937 return unqualified

Callers 3

whereMethod · 0.85
havingMethod · 0.85
joinMethod · 0.85

Calls 7

getTableColumnsFunction · 0.90
getTableNameFunction · 0.90
setMethod · 0.65
hasMethod · 0.65
deleteMethod · 0.65
getMethod · 0.65
addMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…