MCPcopy
hub / github.com/mayneyao/eidos / deleteField

Method deleteField

packages/core/meta-table/column.ts:225–323  ·  view source on GitHub ↗
(tableName: string, tableColumnName: string)

Source from the content-addressed store, hash-verified

223 }
224
225 async deleteField(tableName: string, tableColumnName: string) {
226 const effectTables: string[] = [tableName]
227 const columnsToDelete: { tableName: string; columnName: string }[] = []
228
229 try {
230 await this.dataSpace.db.prepare("BEGIN TRANSACTION;").run()
231
232 const column = await this.getColumn(tableName, tableColumnName)
233 const tm = new TableManager(
234 getTableIdByRawTableName(tableName),
235 this.dataSpace
236 )
237 if (column?.type === FieldType.Text) {
238 await tm.fields.text.beforeDeleteColumn(tableName, tableColumnName)
239 }
240 if (column?.type === FieldType.Link) {
241 const pairedField = await tm.fields.link.getPairedLinkField(column)
242 effectTables.push(pairedField.table_name)
243 // delete relation
244 await tm.fields.link.beforeDeleteColumn(
245 tableName,
246 tableColumnName,
247 this.dataSpace.db
248 )
249 // queue paired field for deletion
250 columnsToDelete.push({
251 tableName: pairedField.table_name,
252 columnName: pairedField.table_column_name,
253 })
254 // queue paired field's __title column for deletion
255 columnsToDelete.push({
256 tableName: pairedField.table_name,
257 columnName: `${pairedField.table_column_name}__title`,
258 })
259 // queue current field's __title column for deletion
260 columnsToDelete.push({
261 tableName: tableName,
262 columnName: `${tableColumnName}__title`,
263 })
264 }
265
266 // queue main column for deletion
267 columnsToDelete.push({ tableName, columnName: tableColumnName })
268
269 const affectedTables = new Set(columnsToDelete.map((c) => c.tableName))
270
271 // Step 1: Delete all metadata records first
272 for (const { tableName: tn, columnName: cn } of columnsToDelete) {
273 // Skip __title columns as they don't have metadata records
274 if (!cn.endsWith("__title")) {
275 this.dataSpace.db
276 .prepare(
277 `DELETE FROM ${ColumnTableName} WHERE table_column_name = ? AND table_name = ?;`
278 )
279 .run([cn, tn])
280 }
281 }
282

Callers

nothing calls this directly

Calls 11

getColumnMethod · 0.95
getTableIdByRawTableNameFunction · 0.90
dropFTSTriggersMethod · 0.80
dropTriggersMethod · 0.80
ensureFTSSchemaMethod · 0.80
setTriggerMethod · 0.80
runMethod · 0.65
prepareMethod · 0.65
errorMethod · 0.65
beforeDeleteColumnMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected