Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export async function deleteRun (id: number): Promise<void> {
  2.   logger.debug(`deleting run ${id}`)
  3.   // step 1: aggregate all directly related ids
  4.   const data = await knex<Segment>('segment')
  5.     .select('datapoint.*')
  6.     .leftOuterJoin('datapoint', 'datapoint.segmentID', 'segment.id')
  7.     .where('segment.runID', id)
  8.  
  9.   const datapointIDs: Array<number> = []
  10.   const poseIDs: Array<number> = []
  11.   const forceTorqueIDs: Array<number> = []
  12.   const jointStateIDs: Array<number> = []
  13.   for (let i = 0; i < data.length; i++) {
  14.     const line = data[i]
  15.     datapointIDs.push(line.id)
  16.     poseIDs.push(line.programStartTcp, line.programTcp, line.startTcp, line.tcp)
  17.     forceTorqueIDs.push(line.fts, line.ftsTcp, line.programFtsTcp)
  18.     jointStateIDs.push(line.jointStateID)
  19.   }
  20.   // step 3: delete everything from bottom up
  21.   // -- datapoint and related
  22.   logger.info('deleting datapoints')
  23.   Promise.all(deleteChunk(datapointIDs, (chunk: Array<number>) => {
  24.     return knex<Datapoint>('datapoint').whereIn('id', chunk).del()
  25.   })).then(async () => {
  26.     logger.info('deleting pose forceTorque jointState')
  27.  
  28.     await Promise.all(deleteChunk(poseIDs, (chunk: Array<number>) => {
  29.       return knex<Pose>('pose').whereIn('id', chunk).del()
  30.     }))
  31.     await Promise.all(deleteChunk(forceTorqueIDs, (chunk: Array<number>) => {
  32.       return knex<ForceTorque>('forceTorque').whereIn('id', chunk).del()
  33.     }))
  34.     await Promise.all(deleteChunk(jointStateIDs, (chunk: Array<number>) => {
  35.       return knex<JointState>('jointState').whereIn('id', chunk).del()
  36.     }))
  37.  
  38.     // -- segment and related
  39.     logger.info('deleting segments')
  40.     knex<Segment>('segment').where('runID', id).del().then(async () => {
  41.       // -- dataset related
  42.       logger.info('deleting datasetRun')
  43.       await knex<DatasetRun>('datasetRun').where('runID', id).del()
  44.  
  45.       // -- tag related
  46.       logger.info('deleting hasTag')
  47.  
  48.       await knex<HasTag>('hasTag').where('runID', id).del()
  49.  
  50.       // -- check related
  51.       logger.info('deleting check')
  52.       await knex<Check>('check').where('runID', id).del()
  53.  
  54.       // -- run related
  55.       logger.info('deleting run')
  56.       await knex<Run>('run').where('id', id).del()
  57.     })
  58.   })
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement