Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export async function deleteRun (id: number): Promise<void> {
- logger.debug(`deleting run ${id}`)
- // step 1: aggregate all directly related ids
- const data = await knex<Segment>('segment')
- .select('datapoint.*')
- .leftOuterJoin('datapoint', 'datapoint.segmentID', 'segment.id')
- .where('segment.runID', id)
- const datapointIDs: Array<number> = []
- const poseIDs: Array<number> = []
- const forceTorqueIDs: Array<number> = []
- const jointStateIDs: Array<number> = []
- for (let i = 0; i < data.length; i++) {
- const line = data[i]
- datapointIDs.push(line.id)
- poseIDs.push(line.programStartTcp, line.programTcp, line.startTcp, line.tcp)
- forceTorqueIDs.push(line.fts, line.ftsTcp, line.programFtsTcp)
- jointStateIDs.push(line.jointStateID)
- }
- // step 3: delete everything from bottom up
- // -- datapoint and related
- logger.info('deleting datapoints')
- Promise.all(deleteChunk(datapointIDs, (chunk: Array<number>) => {
- return knex<Datapoint>('datapoint').whereIn('id', chunk).del()
- })).then(async () => {
- logger.info('deleting pose forceTorque jointState')
- await Promise.all(deleteChunk(poseIDs, (chunk: Array<number>) => {
- return knex<Pose>('pose').whereIn('id', chunk).del()
- }))
- await Promise.all(deleteChunk(forceTorqueIDs, (chunk: Array<number>) => {
- return knex<ForceTorque>('forceTorque').whereIn('id', chunk).del()
- }))
- await Promise.all(deleteChunk(jointStateIDs, (chunk: Array<number>) => {
- return knex<JointState>('jointState').whereIn('id', chunk).del()
- }))
- // -- segment and related
- logger.info('deleting segments')
- knex<Segment>('segment').where('runID', id).del().then(async () => {
- // -- dataset related
- logger.info('deleting datasetRun')
- await knex<DatasetRun>('datasetRun').where('runID', id).del()
- // -- tag related
- logger.info('deleting hasTag')
- await knex<HasTag>('hasTag').where('runID', id).del()
- // -- check related
- logger.info('deleting check')
- await knex<Check>('check').where('runID', id).del()
- // -- run related
- logger.info('deleting run')
- await knex<Run>('run').where('id', id).del()
- })
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement