Skip to content
This repository was archived by the owner on Jun 14, 2021. It is now read-only.

Commit 690dedd

Browse files
author
XiaoLin
committed
fix: remove transaction
1 parent 450c01d commit 690dedd

File tree

1 file changed

+98
-111
lines changed

1 file changed

+98
-111
lines changed

src/module/metadata.js

+98-111
Original file line numberDiff line numberDiff line change
@@ -106,87 +106,82 @@ class Metadata {
106106
async getMetadataId (JAVID, version = 1, JAVmetadata) {
107107
logger.debug('Creating JAV metadata record', JAVID)
108108

109-
return new Promise(async (resolve) => {
110-
try {
111-
const metadataId = await db('metadatas').where('companyName', JAVID.split('-')[0]).where('companyId', JAVID.split('-')[1]).first()
112-
if (metadataId && metadataId.id) {
113-
resolve(metadataId.id)
114-
} else {
115-
await db.transaction(async trx => {
116-
let JAVinfo
117-
118-
switch (version) {
119-
case 1:
120-
JAVinfo = await this.fetchNew(JAVID)
121-
logger.debug('JAVinfo', JAVinfo)
122-
123-
if (!JAVinfo || !JAVinfo.tags.length || !JAVinfo.stars.length) {
124-
logger.warn('Invalid info', JAVinfo)
125-
await ignore.addIgnore(JAVID)
126-
resolve(0)
127-
return
128-
}
129-
break
130-
131-
case 2:
132-
if (!JAVmetadata || !JAVmetadata.tags.length || !JAVmetadata.stars.length) {
133-
logger.warn('Invalid version 2 JAV metadata', JAVmetadata)
134-
resolve(0)
135-
return
136-
}
137-
138-
JAVinfo = JAVmetadata
139-
break
140-
141-
default:
142-
logger.warn(`Unknown version '${version}'`)
143-
resolve(0)
144-
return
145-
}
146-
147-
const dbData = {
148-
title: JAVinfo.title,
149-
companyName: JAVID.split('-')[0],
150-
companyId: JAVID.split('-')[1],
151-
posterFileURL: JAVinfo.cover,
152-
releaseDate: JAVinfo.releaseDate,
153-
updateTime: (new Date()).getTime(),
154-
version
155-
}
156-
157-
if (version === 2) dbData.screenshotFilesURL = JAVinfo.screenshots
158-
else dbData.screenshotFilesURL = []
159-
160-
dbData.screenshotFilesURL = JSON.stringify(dbData.screenshotFilesURL)
161-
162-
let metadataId = await db('metadatas').insert(dbData).transacting(trx).select('id')
163-
metadataId = metadataId[0]
164-
165-
const promises = []
166-
167-
if (JAVinfo.series) promises.push(this.attachMeta('series', metadataId, JAVinfo.series, null, trx))
168-
169-
for (const i in JAVinfo.stars) {
170-
const item = JAVinfo.stars[i]
171-
promises.push(this.attachMeta('star', metadataId, item.name, item.img, trx))
172-
}
173-
174-
for (const i in JAVinfo.tags) {
175-
const item = JAVinfo.tags[i]
176-
promises.push(this.attachMeta('tag', metadataId, item, null, trx))
177-
}
178-
179-
await Promise.all(promises)
180-
181-
logger.debug('Finished attching metas')
182-
183-
resolve(metadataId)
184-
})
109+
try {
110+
const metadataId = await db('metadatas').where('companyName', JAVID.split('-')[0]).where('companyId', JAVID.split('-')[1]).first()
111+
if (metadataId && metadataId.id) {
112+
return metadataId.id
113+
} else {
114+
let JAVinfo
115+
116+
switch (version) {
117+
case 1:
118+
JAVinfo = await this.fetchNew(JAVID)
119+
logger.debug('JAVinfo', JAVinfo)
120+
121+
if (!JAVinfo || !JAVinfo.tags.length || !JAVinfo.stars.length) {
122+
logger.warn('Invalid info', JAVinfo)
123+
await ignore.addIgnore(JAVID)
124+
return 0
125+
}
126+
break
127+
128+
case 2:
129+
if (!JAVmetadata || !JAVmetadata.tags.length || !JAVmetadata.stars.length) {
130+
logger.warn('Invalid version 2 JAV metadata', JAVmetadata)
131+
return 0
132+
}
133+
134+
JAVinfo = JAVmetadata
135+
break
136+
137+
default:
138+
logger.warn(`Unknown version '${version}'`)
139+
return
140+
}
141+
142+
const dbData = {
143+
title: JAVinfo.title,
144+
companyName: JAVID.split('-')[0],
145+
companyId: JAVID.split('-')[1],
146+
posterFileURL: JAVinfo.cover,
147+
releaseDate: JAVinfo.releaseDate,
148+
updateTime: (new Date()).getTime(),
149+
version
150+
}
151+
152+
if (version === 2) dbData.screenshotFilesURL = JAVinfo.screenshots
153+
else dbData.screenshotFilesURL = []
154+
155+
dbData.screenshotFilesURL = JSON.stringify(dbData.screenshotFilesURL)
156+
157+
let metadataId = await db('metadatas').insert(dbData).select('id')
158+
metadataId = metadataId[0]
159+
160+
const promises = []
161+
162+
if (JAVinfo.series) promises.push(this.attachMeta('series', metadataId, JAVinfo.series, null))
163+
164+
for (const i in JAVinfo.stars) {
165+
const item = JAVinfo.stars[i]
166+
promises.push(this.attachMeta('star', metadataId, item.name, item.img))
167+
}
168+
169+
for (const i in JAVinfo.tags) {
170+
const item = JAVinfo.tags[i]
171+
promises.push(this.attachMeta('tag', metadataId, item, null))
185172
}
186-
} catch (error) {
187-
logger.error('Error while creating records', error)
173+
174+
await (Promise.all(promises).catch((error) => {
175+
logger.error(error)
176+
}))
177+
178+
logger.debug('Finished attching metas')
179+
180+
return metadataId
188181
}
189-
})
182+
} catch (error) {
183+
logger.error('Error while creating records', error)
184+
}
190185
}
191186

192187
/**
@@ -337,11 +332,10 @@ class Metadata {
337332
* @param {String} type value can be: tags, stars, series
338333
* @param {String} name name
339334
* @param {String=} photoURL photo URL
340-
* @param {trx} trx knex trx object
341335
*
342336
* @returns {Int} id
343337
*/
344-
async getMetaId (type, name, photoURL, trx) {
338+
async getMetaId (type, name, photoURL) {
345339
try {
346340
const result = await db(`${type}`).where('name', name).first()
347341
if (result) {
@@ -357,7 +351,7 @@ class Metadata {
357351

358352
if (photoURL) data.photoURL = photoURL
359353

360-
let id = await db(`${type}`).insert(data).transacting(trx).select('id')
354+
let id = await db(`${type}`).insert(data).select('id')
361355
id = id[0]
362356

363357
logger.debug(`[${type}] record for`, name, 'created,', id)
@@ -434,42 +428,35 @@ class Metadata {
434428
* @param {Int} metadataId
435429
* @param {String} name
436430
* @param {String=} photoURL photo URL
437-
* @param {trx} trx knex trx object
438431
*
439432
* @return {Int}
440433
*/
441-
async attachMeta (type, metadataId, name, photoURL, trx) {
434+
async attachMeta (type, metadataId, name, photoURL) {
442435
const map = this._getTypeMapping(type)
443436
logger.debug(map)
444437

445-
return new Promise(async (resolve) => {
446-
try {
447-
const id = await this.getMetaId(map.type, name, photoURL, trx)
448-
logger.debug(`${map.log} id`, id)
449-
450-
const count = await db(`${map.type}_mapping`).where(map.column, id).where('metadataId', metadataId).count()
451-
await db.transaction(async trx => {
452-
if (count[0]['count(*)'] === 0) {
453-
logger.debug('Create mapping, count', count, count[0]['count(*)'])
454-
455-
const data = {
456-
metadataId,
457-
updateTime: (new Date()).getTime()
458-
}
459-
data[map.column] = id
460-
461-
await db(`${map.type}_mapping`).insert(data).transacting(trx)
462-
resolve(1)
463-
} else {
464-
logger.debug('Meta exist')
465-
resolve(1)
466-
};
467-
})
468-
} catch (error) {
469-
logger.error('Error while attaching a record', error)
470-
throw error
438+
try {
439+
const id = await this.getMetaId(map.type, name, photoURL)
440+
logger.debug(`${map.log} id`, id)
441+
442+
const count = await db(`${map.type}_mapping`).where(map.column, id).where('metadataId', metadataId).count()
443+
if (count[0]['count(*)'] === 0) {
444+
logger.debug('Create mapping, count', count, count[0]['count(*)'])
445+
446+
const data = {
447+
metadataId,
448+
updateTime: (new Date()).getTime()
449+
}
450+
data[map.column] = id
451+
452+
await db(`${map.type}_mapping`).insert(data)
453+
} else {
454+
logger.debug('Meta exists')
471455
}
472-
})
456+
} catch (error) {
457+
logger.error('Error while attaching a record', error)
458+
throw error
459+
}
473460
}
474461

475462
async searchMetadata (searchStr, page, size) {

0 commit comments

Comments
 (0)