Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | 33x 35x 21x 14x 14x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 27x 7x 20x 1x 19x 5x 14x 2x 12x 4x 8x 7x 1x 1x 35x 79x 74x 5x 2x 5x 5x 35x | import { is } from 'drizzle-orm/entity'
import { Table } from 'drizzle-orm/table'
import type { YdbColumn } from './columns/common.js'
import { type YdbIndex, YdbIndexBuilder } from './indexes.js'
import { type YdbPrimaryKey, YdbPrimaryKeyBuilder } from './primary-keys.js'
import {
type YdbColumnFamily,
YdbColumnFamilyBuilder,
type YdbPartitioning,
YdbPartitioningBuilder,
type YdbTableOptions,
YdbTableOptionsBuilder,
type YdbTtl,
YdbTtlBuilder,
} from './table-options.js'
import { YdbTable, type YdbTableExtraConfigValue, type YdbTableWithColumns } from './table.js'
import { type YdbUniqueConstraint, YdbUniqueConstraintBuilder } from './unique-constraint.js'
let drizzleTableSymbol = (Table as any).Symbol
export interface YdbTableRuntimeConfig {
readonly name: string
readonly columns: readonly YdbColumn[]
readonly indexes: readonly YdbIndex[]
readonly primaryKeys: readonly YdbPrimaryKey[]
readonly uniqueConstraints: readonly YdbUniqueConstraint[]
readonly tableOptions: readonly YdbTableOptions[]
readonly partitioning: readonly YdbPartitioning[]
readonly ttls: readonly YdbTtl[]
readonly columnFamilies: readonly YdbColumnFamily[]
}
function normalizeExtraConfig(
extraConfig: YdbTableExtraConfigValue[] | Record<string, YdbTableExtraConfigValue> | undefined
): YdbTableExtraConfigValue[] {
if (!extraConfig) {
return []
}
Eif (Array.isArray(extraConfig)) {
return extraConfig.flat(1) as YdbTableExtraConfigValue[]
}
return Object.values(extraConfig)
}
export function getTableConfig(table: YdbTableWithColumns): YdbTableRuntimeConfig {
let columns = Object.values((table as any)[YdbTable.Symbol.Columns] ?? {}) as YdbColumn[]
let indexes: YdbIndex[] = []
let primaryKeys: YdbPrimaryKey[] = []
let uniqueConstraints: YdbUniqueConstraint[] = []
let tableOptions: YdbTableOptions[] = []
let partitioning: YdbPartitioning[] = []
let ttls: YdbTtl[] = []
let columnFamilies: YdbColumnFamily[] = []
let extraConfigBuilder = (table as any)[YdbTable.Symbol.ExtraConfigBuilder] as
| ((
self: YdbTableWithColumns
) => YdbTableExtraConfigValue[] | Record<string, YdbTableExtraConfigValue>)
| undefined
let extraValues = normalizeExtraConfig(extraConfigBuilder?.(table))
for (let builder of extraValues) {
if (is(builder, YdbIndexBuilder)) {
indexes.push(builder.build(table))
} else if (is(builder, YdbPrimaryKeyBuilder)) {
primaryKeys.push(builder.build(table))
} else if (is(builder, YdbTableOptionsBuilder)) {
tableOptions.push(builder.build(table))
} else if (is(builder, YdbPartitioningBuilder)) {
partitioning.push(builder.build(table))
} else if (is(builder, YdbTtlBuilder)) {
ttls.push(builder.build(table))
} else if (is(builder, YdbColumnFamilyBuilder)) {
columnFamilies.push(builder.build(table))
} else Eif (is(builder, YdbUniqueConstraintBuilder)) {
uniqueConstraints.push(builder.build(table))
}
}
for (let column of columns) {
if (!column.isUnique) {
continue
}
let hasTableLevelDuplicate = uniqueConstraints.some(
(constraint) =>
constraint.config.columns.length === 1 && constraint.config.columns[0] === column
)
Iif (hasTableLevelDuplicate) {
continue
}
uniqueConstraints.push(
new YdbUniqueConstraintBuilder(column.uniqueName, [column]).build(table)
)
}
return {
name: (table as any)[drizzleTableSymbol.Name] as string,
columns,
indexes,
primaryKeys,
uniqueConstraints,
tableOptions,
partitioning,
ttls,
columnFamilies,
}
}
|