mirror of https://github.com/fantasticit/think.git
sever: fix sql to select recent documents
parent
d1f51707a8
commit
f37820f79f
|
@ -19,21 +19,12 @@ export class ViewService {
|
|||
* @returns
|
||||
*/
|
||||
async create({ userId = 'public', documentId, userAgent }) {
|
||||
const old = await this.viewRepo.findOne({ documentId, userId });
|
||||
let data;
|
||||
|
||||
if (old) {
|
||||
data = await this.viewRepo.merge(old, {
|
||||
updatedAt: convertDateToMysqlTimestamp(Date.now()),
|
||||
});
|
||||
} else {
|
||||
data = await this.viewRepo.create({
|
||||
const data = await this.viewRepo.create({
|
||||
userId,
|
||||
documentId,
|
||||
originUserAgent: userAgent,
|
||||
parsedUserAgent: parseUserAgent(userAgent).text,
|
||||
});
|
||||
}
|
||||
const ret = await this.viewRepo.save(data);
|
||||
return ret;
|
||||
}
|
||||
|
@ -80,11 +71,16 @@ export class ViewService {
|
|||
const count = 20;
|
||||
|
||||
const ret = await this.viewRepo.query(
|
||||
`SELECT documentId, ANY_VALUE(updated_at) as visitedAt
|
||||
`
|
||||
SELECT v.documentId, v.visitedAt FROM (
|
||||
SELECT ANY_VALUE(documentId) as documentId, ANY_VALUE(created_at) as visitedAt
|
||||
FROM view
|
||||
WHERE view.userId = '${userId}'
|
||||
AND (view.updated_at BETWEEN '${from}' AND '${end}')
|
||||
GROUP BY documentId
|
||||
AND (view.created_at BETWEEN '${from}' AND '${end}')
|
||||
GROUP BY visitedAt
|
||||
ORDER BY visitedAt DESC
|
||||
) v
|
||||
GROUP BY v.documentId
|
||||
LIMIT ${count}
|
||||
`
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue