mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
reduce find user query
This commit is contained in:
parent
a37bfab348
commit
7e022e3294
7 changed files with 39 additions and 32 deletions
|
|
@ -261,7 +261,7 @@ export const createArticleResolver = authorized<
|
|||
FORCE_PUPPETEER_URLS.some((regex) => regex.test(url))
|
||||
) {
|
||||
await createPageSaveRequest({
|
||||
userId: uid,
|
||||
user: userData,
|
||||
url,
|
||||
state: state || undefined,
|
||||
labels: inputLabels || undefined,
|
||||
|
|
@ -286,7 +286,7 @@ export const createArticleResolver = authorized<
|
|||
// We have a URL but no document, so we try to send this to puppeteer
|
||||
// and return a dummy response.
|
||||
await createPageSaveRequest({
|
||||
userId: uid,
|
||||
user: userData,
|
||||
url,
|
||||
state: state || undefined,
|
||||
labels: inputLabels || undefined,
|
||||
|
|
@ -977,7 +977,7 @@ export const moveToFolderResolver = authorized<
|
|||
if (item.state === LibraryItemState.ContentNotFetched) {
|
||||
try {
|
||||
await createPageSaveRequest({
|
||||
userId: uid,
|
||||
user: item.user,
|
||||
url: item.originalUrl,
|
||||
articleSavingRequestId: id,
|
||||
priority: 'high',
|
||||
|
|
@ -1013,7 +1013,14 @@ export const fetchContentResolver = authorized<
|
|||
},
|
||||
})
|
||||
|
||||
const item = await findLibraryItemById(id, uid)
|
||||
const item = await authTrx((tx) =>
|
||||
tx.getRepository(LibraryItem).findOne({
|
||||
where: {
|
||||
id,
|
||||
},
|
||||
relations: ['user'],
|
||||
})
|
||||
)
|
||||
if (!item) {
|
||||
return {
|
||||
errorCodes: [FetchContentErrorCode.Unauthorized],
|
||||
|
|
@ -1024,7 +1031,7 @@ export const fetchContentResolver = authorized<
|
|||
if (item.state === LibraryItemState.ContentNotFetched) {
|
||||
try {
|
||||
await createPageSaveRequest({
|
||||
userId: uid,
|
||||
user: item.user,
|
||||
url: item.originalUrl,
|
||||
articleSavingRequestId: id,
|
||||
priority: 'high',
|
||||
|
|
|
|||
|
|
@ -42,9 +42,14 @@ export const createArticleSavingRequestResolver = authorized<
|
|||
},
|
||||
})
|
||||
|
||||
const user = await userRepository.findById(uid)
|
||||
if (!user) {
|
||||
return { errorCodes: [CreateArticleSavingRequestErrorCode.Unauthorized] }
|
||||
}
|
||||
|
||||
try {
|
||||
const articleSavingRequest = await createPageSaveRequest({
|
||||
userId: uid,
|
||||
user,
|
||||
url,
|
||||
pubsub,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import * as jwt from 'jsonwebtoken'
|
|||
import { Speech } from '../entity/speech'
|
||||
import { env } from '../env'
|
||||
import { CreateArticleErrorCode } from '../generated/graphql'
|
||||
import { userRepository } from '../repository/user'
|
||||
import { Claims } from '../resolvers/types'
|
||||
import { createPageSaveRequest } from '../services/create_page_save_request'
|
||||
import { findLibraryItemById } from '../services/library_item'
|
||||
|
|
@ -32,6 +33,9 @@ export function articleRouter() {
|
|||
const { url } = req.body as {
|
||||
url?: string
|
||||
}
|
||||
if (!url) {
|
||||
return res.status(400).send({ errorCode: 'BAD_DATA' })
|
||||
}
|
||||
|
||||
const token = req?.cookies?.auth || req?.headers?.authorization
|
||||
const claims = await getClaimsByToken(token)
|
||||
|
|
@ -40,20 +44,12 @@ export function articleRouter() {
|
|||
}
|
||||
|
||||
const { uid } = claims
|
||||
|
||||
logger.info('Article saving request', {
|
||||
body: req.body,
|
||||
labels: {
|
||||
source: 'SaveEndpoint',
|
||||
userId: uid,
|
||||
},
|
||||
})
|
||||
|
||||
if (!url) {
|
||||
return res.status(400).send({ errorCode: 'BAD_DATA' })
|
||||
const user = await userRepository.findById(uid)
|
||||
if (!user) {
|
||||
return res.status(400).send('Bad Request')
|
||||
}
|
||||
|
||||
const result = await createPageSaveRequest({ userId: uid, url })
|
||||
const result = await createPageSaveRequest({ user, url })
|
||||
|
||||
if (isSiteBlockedForParse(url)) {
|
||||
return res
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import express from 'express'
|
|||
import { LessThan } from 'typeorm'
|
||||
import { LibraryItemState } from '../../entity/library_item'
|
||||
import { readPushSubscription } from '../../pubsub'
|
||||
import { userRepository } from '../../repository/user'
|
||||
import { createPageSaveRequest } from '../../services/create_page_save_request'
|
||||
import { deleteLibraryItemsByAdmin } from '../../services/library_item'
|
||||
import { logger } from '../../utils/logger'
|
||||
|
|
@ -65,9 +66,14 @@ export function linkServiceRouter() {
|
|||
}
|
||||
const msg = data as CreateLinkRequestMessage
|
||||
|
||||
const user = await userRepository.findById(msg.userId)
|
||||
if (!user) {
|
||||
return res.status(400).send('Bad Request')
|
||||
}
|
||||
|
||||
try {
|
||||
const request = await createPageSaveRequest({
|
||||
userId: msg.userId,
|
||||
user,
|
||||
url: msg.url,
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import * as privateIpLib from 'private-ip'
|
||||
import { LibraryItemState } from '../entity/library_item'
|
||||
import { User } from '../entity/user'
|
||||
import {
|
||||
ArticleSavingRequest,
|
||||
ArticleSavingRequestStatus,
|
||||
|
|
@ -8,7 +9,6 @@ import {
|
|||
PageType,
|
||||
} from '../generated/graphql'
|
||||
import { createPubSubClient, PubsubClient } from '../pubsub'
|
||||
import { userRepository } from '../repository/user'
|
||||
import { enqueueParseRequest } from '../utils/createTask'
|
||||
import {
|
||||
cleanUrl,
|
||||
|
|
@ -19,7 +19,7 @@ import { logger } from '../utils/logger'
|
|||
import { countByCreatedAt, createOrUpdateLibraryItem } from './library_item'
|
||||
|
||||
interface PageSaveRequest {
|
||||
userId: string
|
||||
user: User
|
||||
url: string
|
||||
pubsub?: PubsubClient
|
||||
articleSavingRequestId?: string
|
||||
|
|
@ -75,7 +75,7 @@ export const validateUrl = (url: string): URL => {
|
|||
}
|
||||
|
||||
export const createPageSaveRequest = async ({
|
||||
userId,
|
||||
user,
|
||||
url,
|
||||
pubsub = createPubSubClient(),
|
||||
articleSavingRequestId,
|
||||
|
|
@ -97,15 +97,8 @@ export const createPageSaveRequest = async ({
|
|||
errorCode: CreateArticleSavingRequestErrorCode.BadData,
|
||||
})
|
||||
}
|
||||
// if user is not specified, get it from the database
|
||||
const user = await userRepository.findById(userId)
|
||||
if (!user) {
|
||||
logger.info(`User not found: ${userId}`)
|
||||
return Promise.reject({
|
||||
errorCode: CreateArticleSavingRequestErrorCode.BadData,
|
||||
})
|
||||
}
|
||||
|
||||
const userId = user.id
|
||||
url = cleanUrl(url)
|
||||
|
||||
// create processing item
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ export const savePage = async (
|
|||
if (shouldParseInBackend(input)) {
|
||||
try {
|
||||
await createPageSaveRequest({
|
||||
userId: user.id,
|
||||
user,
|
||||
url: itemToSave.originalUrl,
|
||||
articleSavingRequestId: clientRequestId || undefined,
|
||||
state: input.state || undefined,
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ export const saveUrl = async (
|
|||
try {
|
||||
const pageSaveRequest = await createPageSaveRequest({
|
||||
...input,
|
||||
userId: user.id,
|
||||
user,
|
||||
articleSavingRequestId: input.clientRequestId,
|
||||
state: input.state || undefined,
|
||||
labels: input.labels || undefined,
|
||||
|
|
|
|||
Loading…
Reference in a new issue