| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { PGForeignTable, PGMaterializedView, PGView } from '@supabase/pg-meta'
- import { ENTITY_TYPE } from '@/data/entity-types/entity-type-constants'
- import type { SafePostgresTable } from '@/lib/postgres-types'
- // [Joshen] We just need name, schema, description, rows, size, and the number of columns
- // Just missing partitioned tables as missing pg-meta support
- export const formatAllEntities = ({
- tables = [],
- views = [],
- materializedViews = [],
- foreignTables = [],
- }: {
- tables?: SafePostgresTable[]
- views?: PGView[]
- materializedViews?: PGMaterializedView[]
- foreignTables?: PGForeignTable[]
- }) => {
- const formattedTables = tables.map((x) => {
- return {
- ...x,
- type: ENTITY_TYPE.TABLE as const,
- rows: x.live_rows_estimate,
- columns: x.columns ?? [],
- }
- })
- const formattedViews = views.map((x) => {
- return {
- type: ENTITY_TYPE.VIEW as const,
- id: x.id,
- name: x.name,
- comment: x.comment,
- schema: x.schema,
- rows: undefined,
- size: undefined,
- columns: x.columns ?? [],
- }
- })
- const formattedMaterializedViews = materializedViews.map((x) => {
- return {
- type: ENTITY_TYPE.MATERIALIZED_VIEW as const,
- id: x.id,
- name: x.name,
- comment: x.comment,
- schema: x.schema,
- rows: undefined,
- size: undefined,
- columns: x.columns ?? [],
- }
- })
- const formattedForeignTables = foreignTables.map((x) => {
- return {
- type: ENTITY_TYPE.FOREIGN_TABLE as const,
- id: x.id,
- name: x.name,
- comment: x.comment,
- schema: x.schema,
- rows: undefined,
- size: undefined,
- columns: x.columns ?? [],
- }
- })
- return [
- ...formattedTables,
- ...formattedViews,
- ...formattedMaterializedViews,
- ...formattedForeignTables,
- ].sort((a, b) => a.name.localeCompare(b.name))
- }
|