Skip to content

Commit f2bf79b

Browse files
committed
fix: fix dropping table
1 parent e9da736 commit f2bf79b

File tree

6 files changed

+60
-11
lines changed

6 files changed

+60
-11
lines changed

apps/frontend/src/lib/components/blocks/grid-view/grid-view-data-table.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@
210210
hasFilter && "bg-orange-50",
211211
)}
212212
use:props.resize
213+
data-field-id={cell.id}
213214
>
214215
{#if cell.id === "$select" && !$hasRecord}
215216
<Checkbox checked={false} disabled />

packages/event-handlers/src/handlers/dashboard-on-table-deleted.event-handler.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ export class DashboardOnTableDeletedEventHandle implements IEventHandler<TableDe
1919

2020
const spec = new DashboardTableIdSpecification(tableId)
2121
const dashboards = await this.dashboardRepository.find(spec)
22-
console.log(dashboards)
2322

2423
for (const dashboard of dashboards) {
2524
const spec = dashboard.$onTableDeleted(tableId)

packages/persistence/src/table/table.filter-visitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ export class TableFilterVisitor extends AbstractQBVisitor<TableDo> implements IT
165165
const subQuery = this.qb
166166
.selectFrom("undb_reference_id_mapping")
167167
.select(["foreign_table_id"])
168-
.where((eb) => eb.eb("table_id", "=", spec.tableId.value))
168+
.where((eb) => eb.eb("table_id", "=", spec.tableId.value).or(eb.eb("foreign_table_id", "=", spec.tableId.value)))
169169
const cond = this.eb.eb("id", "in", subQuery)
170170
this.addCond(cond)
171171
}

packages/persistence/src/table/table.repository.ts

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,56 @@ export class TableRepository implements ITableRepository {
109109
.onConflict((ob) => ob.doNothing())
110110
.execute()
111111

112+
for (const view of table.views.views) {
113+
await trx
114+
.insertInto("undb_table_id_mapping")
115+
.values({
116+
table_id: table.id.value,
117+
subject_id: view.id.value,
118+
})
119+
.onConflict((ob) => ob.doNothing())
120+
.execute()
121+
}
122+
123+
for (const form of table.forms?.props ?? []) {
124+
await trx
125+
.insertInto("undb_table_id_mapping")
126+
.values({
127+
table_id: table.id.value,
128+
subject_id: form.id,
129+
})
130+
.onConflict((ob) => ob.doNothing())
131+
.execute()
132+
}
133+
134+
for (const field of table.schema.fields) {
135+
if (field.type === "rollup") {
136+
const referenceField = field.getReferenceField(table)
137+
const option = field.option.unwrap()
138+
await trx
139+
.insertInto("undb_rollup_id_mapping")
140+
.values({
141+
field_id: option.rollupFieldId,
142+
table_id: referenceField.foreignTableId,
143+
rollup_id: field.id.value,
144+
rollup_table_id: table.id.value,
145+
})
146+
.onConflict((ob) => ob.doNothing())
147+
.execute()
148+
} else if (field.type === "reference" && field.symmetricFieldId) {
149+
await trx
150+
.insertInto("undb_reference_id_mapping")
151+
.values({
152+
field_id: field.id.value,
153+
table_id: table.id.value,
154+
symmetric_field_id: field.symmetricFieldId,
155+
foreign_table_id: field.foreignTableId,
156+
})
157+
.onConflict((ob) => ob.doNothing())
158+
.execute()
159+
}
160+
}
161+
112162
await this.underlyingTableService.create(table)
113163
await this.outboxService.save(table)
114164
}
@@ -200,7 +250,6 @@ export class TableRepository implements ITableRepository {
200250
.execute()
201251

202252
await this.underlyingTableService.delete(table)
203-
console.log("save", table.domainEvents)
204253
await this.outboxService.save(table)
205254
}
206255
}

packages/persistence/src/tables.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ export const referenceIdMapping = sqliteTable(
100100
tableId: text("table_id")
101101
.notNull()
102102
.references(() => tables.id),
103-
rollupId: text("symmetric_field_id").notNull(),
104-
rollupTableId: text("foreign_table_id")
103+
symmetricFieldId: text("symmetric_field_id").notNull(),
104+
foreignTableId: text("foreign_table_id")
105105
.notNull()
106106
.references(() => tables.id),
107107
},
@@ -110,8 +110,8 @@ export const referenceIdMapping = sqliteTable(
110110
uniqueIndex: unique("reference_id_mapping_unique_idx").on(
111111
table.fieldId,
112112
table.tableId,
113-
table.rollupId,
114-
table.rollupTableId,
113+
table.symmetricFieldId,
114+
table.foreignTableId,
115115
),
116116
}
117117
},

packages/persistence/src/underlying/underlying-table.service.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { injectContext,type IContext } from "@undb/context"
1+
import { injectContext, type IContext } from "@undb/context"
22
import { singleton } from "@undb/di"
33
import { createLogger } from "@undb/logger"
4-
import type { TableComositeSpecification,TableDo } from "@undb/table"
4+
import type { TableComositeSpecification, TableDo } from "@undb/table"
55
import type { CompiledQuery } from "kysely"
6-
import { getAnonymousTransaction,getCurrentTransaction } from "../ctx"
6+
import { getAnonymousTransaction, getCurrentTransaction } from "../ctx"
77
import { JoinTable } from "./reference/join-table"
88
import { UnderlyingTable } from "./underlying-table"
99
import { UnderlyingTableFieldVisitor } from "./underlying-table-field.visitor"
@@ -53,7 +53,7 @@ export class UnderlyingTableService {
5353
const referenceFields = table.schema.getReferenceFields()
5454
for (const field of referenceFields) {
5555
const joinTable = new JoinTable(table, field)
56-
await trx.schema.dropTable(joinTable.getTableName()).execute()
56+
await trx.schema.dropTable(joinTable.getTableName()).ifExists().execute()
5757
}
5858
}
5959

0 commit comments

Comments
 (0)