create a repository directory
This commit is contained in:
@ -19,7 +19,7 @@ import { functionResolvers } from './resolvers/function_resolvers'
|
||||
import { ClaimsToSet, ResolverContext } from './resolvers/types'
|
||||
import ScalarResolvers from './scalars'
|
||||
import typeDefs from './schema'
|
||||
import { AppDataSource } from './server'
|
||||
import { AppDataSource } from './data-source'
|
||||
import { tracer } from './tracing'
|
||||
import { getClaimsByToken, setAuthInCookie } from './utils/auth'
|
||||
import { SetClaimsRole } from './utils/dictionary'
|
||||
|
||||
22
packages/api/src/data-source.ts
Normal file
22
packages/api/src/data-source.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { DataSource } from 'typeorm'
|
||||
import { SnakeNamingStrategy } from 'typeorm-naming-strategies'
|
||||
import { env } from './env'
|
||||
import { CustomTypeOrmLogger } from './utils/logger'
|
||||
|
||||
export const AppDataSource = new DataSource({
|
||||
type: 'postgres',
|
||||
host: env.pg.host,
|
||||
port: env.pg.port,
|
||||
schema: 'omnivore',
|
||||
username: env.pg.userName,
|
||||
password: env.pg.password,
|
||||
database: env.pg.dbName,
|
||||
logging: ['query', 'info'],
|
||||
entities: [__dirname + '/entity/**/*{.js,.ts}'],
|
||||
subscribers: [__dirname + '/events/**/*{.js,.ts}'],
|
||||
namingStrategy: new SnakeNamingStrategy(),
|
||||
logger: new CustomTypeOrmLogger(),
|
||||
// cache: true,
|
||||
connectTimeoutMS: 60000, // 60 seconds
|
||||
maxQueryExecutionTime: 60000, // 60 seconds
|
||||
})
|
||||
@ -114,7 +114,7 @@ export interface RecommendingUser {
|
||||
userId: string
|
||||
name: string
|
||||
username: string
|
||||
profileImageURL: string | null
|
||||
profileImageURL?: string | null
|
||||
}
|
||||
|
||||
export interface Recommendation {
|
||||
|
||||
@ -19,7 +19,7 @@ export class LibraryItemPreview {
|
||||
@JoinColumn({ name: 'sender_id' })
|
||||
sender!: User
|
||||
|
||||
@Column('array', { name: 'recipient_ids' })
|
||||
@Column('text', { name: 'recipient_ids', array: true })
|
||||
recipientIds!: string[]
|
||||
|
||||
@OneToOne(() => LibraryItem, { onDelete: 'CASCADE' })
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { EntityManager, EntityTarget, Repository } from 'typeorm'
|
||||
import { AppDataSource } from '../server'
|
||||
import { Reminder } from './reminder'
|
||||
import { UploadFile } from './upload_file'
|
||||
import { User } from './user'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { Reminder } from '../entity/reminder'
|
||||
import { UploadFile } from '../entity/upload_file'
|
||||
import { User } from '../entity/user'
|
||||
|
||||
export const setClaims = async (
|
||||
t: EntityManager,
|
||||
@ -1,6 +1,4 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { ApiKey } from '../../entity/api_key'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
ApiKeysError,
|
||||
@ -15,6 +13,7 @@ import {
|
||||
RevokeApiKeyErrorCode,
|
||||
RevokeApiKeySuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository, userRepository } from '../../repository'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { generateApiKey, hashApiKey } from '../../utils/auth'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
@ -24,7 +23,7 @@ export const apiKeysResolver = authorized<ApiKeysSuccess, ApiKeysError>(
|
||||
log.info('apiKeysResolver')
|
||||
|
||||
try {
|
||||
const user = await getRepository(User).findOneBy({ id: uid })
|
||||
const user = await userRepository.findOneBy({ id: uid })
|
||||
if (!user) {
|
||||
return {
|
||||
errorCodes: [ApiKeysErrorCode.Unauthorized],
|
||||
@ -60,7 +59,7 @@ export const generateApiKeyResolver = authorized<
|
||||
>(async (_, { input: { name, expiresAt } }, { claims: { uid }, log }) => {
|
||||
try {
|
||||
log.info('generateApiKeyResolver')
|
||||
const user = await getRepository(User).findOneBy({ id: uid })
|
||||
const user = await userRepository.findOneBy({ id: uid })
|
||||
if (!user) {
|
||||
return {
|
||||
errorCodes: [GenerateApiKeyErrorCode.Unauthorized],
|
||||
@ -117,7 +116,7 @@ export const revokeApiKeyResolver = authorized<
|
||||
log.info('RevokeApiKeyResolver')
|
||||
|
||||
try {
|
||||
const user = await getRepository(User).findOneBy({ id: uid })
|
||||
const user = await userRepository.findOneBy({ id: uid })
|
||||
if (!user) {
|
||||
return {
|
||||
errorCodes: [RevokeApiKeyErrorCode.Unauthorized],
|
||||
|
||||
@ -20,7 +20,7 @@ import {
|
||||
PageType,
|
||||
SearchItem as SearchItemData,
|
||||
} from '../../elastic/types'
|
||||
import { getRepository } from '../../entity'
|
||||
import { getRepository } from '../../repository'
|
||||
import { UploadFile } from '../../entity/upload_file'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
/* eslint-disable prefer-const */
|
||||
import { getPageByParam } from '../../elastic/pages'
|
||||
import { getRepository } from '../../entity'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
@ -14,6 +13,7 @@ import {
|
||||
MutationCreateArticleSavingRequestArgs,
|
||||
QueryArticleSavingRequestArgs,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { createPageSaveRequest } from '../../services/create_page_save_request'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Between } from 'typeorm'
|
||||
import { getRepository, setClaims } from '../../entity'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { Filter } from '../../entity/filter'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
@ -24,7 +24,7 @@ import {
|
||||
UpdateFilterSuccess,
|
||||
UpdateFilterErrorCode,
|
||||
} from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { getRepository, setClaims } from '../../repository'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { env } from '../../env'
|
||||
import { isNil, mergeWith } from 'lodash'
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
||||
import { getPageByParam } from '../elastic/pages'
|
||||
import { getRepository } from '../entity'
|
||||
import { getRepository } from '../repository'
|
||||
import { Subscription } from '../entity/subscription'
|
||||
import { UploadFile } from '../entity/upload_file'
|
||||
import { User } from '../entity/user'
|
||||
@ -95,7 +95,7 @@ import {
|
||||
setLinkArchivedResolver,
|
||||
setRuleResolver,
|
||||
// setShareArticleResolver,
|
||||
setShareHighlightResolver,
|
||||
// setShareHighlightResolver,
|
||||
setUserPersonalizationResolver,
|
||||
setWebhookResolver,
|
||||
subscribeResolver,
|
||||
@ -163,7 +163,7 @@ export const functionResolvers = {
|
||||
setBookmarkArticle: setBookmarkArticleResolver,
|
||||
setUserPersonalization: setUserPersonalizationResolver,
|
||||
createArticleSavingRequest: createArticleSavingRequestResolver,
|
||||
setShareHighlight: setShareHighlightResolver,
|
||||
// setShareHighlight: setShareHighlightResolver,
|
||||
reportItem: reportItemResolver,
|
||||
// updateLinkShareInfo: updateLinkShareInfoResolver,
|
||||
setLinkArchived: setLinkArchivedResolver,
|
||||
@ -602,31 +602,31 @@ export const functionResolvers = {
|
||||
...resultResolveTypeResolver('UpdateUser'),
|
||||
...resultResolveTypeResolver('UpdateUserProfile'),
|
||||
...resultResolveTypeResolver('Article'),
|
||||
...resultResolveTypeResolver('SharedArticle'),
|
||||
// ...resultResolveTypeResolver('SharedArticle'),
|
||||
...resultResolveTypeResolver('Articles'),
|
||||
...resultResolveTypeResolver('User'),
|
||||
...resultResolveTypeResolver('Users'),
|
||||
...resultResolveTypeResolver('SaveArticleReadingProgress'),
|
||||
...resultResolveTypeResolver('FeedArticles'),
|
||||
// ...resultResolveTypeResolver('FeedArticles'),
|
||||
...resultResolveTypeResolver('CreateArticle'),
|
||||
...resultResolveTypeResolver('CreateHighlight'),
|
||||
...resultResolveTypeResolver('CreateReaction'),
|
||||
...resultResolveTypeResolver('DeleteReaction'),
|
||||
// ...resultResolveTypeResolver('CreateReaction'),
|
||||
// ...resultResolveTypeResolver('DeleteReaction'),
|
||||
...resultResolveTypeResolver('MergeHighlight'),
|
||||
...resultResolveTypeResolver('UpdateHighlight'),
|
||||
...resultResolveTypeResolver('DeleteHighlight'),
|
||||
...resultResolveTypeResolver('UploadFileRequest'),
|
||||
...resultResolveTypeResolver('SetShareArticle'),
|
||||
...resultResolveTypeResolver('UpdateSharedComment'),
|
||||
// ...resultResolveTypeResolver('SetShareArticle'),
|
||||
// ...resultResolveTypeResolver('UpdateSharedComment'),
|
||||
...resultResolveTypeResolver('SetBookmarkArticle'),
|
||||
...resultResolveTypeResolver('SetFollow'),
|
||||
...resultResolveTypeResolver('GetFollowers'),
|
||||
...resultResolveTypeResolver('GetFollowing'),
|
||||
// ...resultResolveTypeResolver('SetFollow'),
|
||||
// ...resultResolveTypeResolver('GetFollowers'),
|
||||
// ...resultResolveTypeResolver('GetFollowing'),
|
||||
...resultResolveTypeResolver('GetUserPersonalization'),
|
||||
...resultResolveTypeResolver('SetUserPersonalization'),
|
||||
...resultResolveTypeResolver('ArticleSavingRequest'),
|
||||
...resultResolveTypeResolver('CreateArticleSavingRequest'),
|
||||
...resultResolveTypeResolver('SetShareHighlight'),
|
||||
// ...resultResolveTypeResolver('SetShareHighlight'),
|
||||
...resultResolveTypeResolver('ArchiveLink'),
|
||||
...resultResolveTypeResolver('CreateNewsletterEmail'),
|
||||
...resultResolveTypeResolver('NewsletterEmails'),
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { getRepository } from '../../entity'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
@ -9,6 +8,7 @@ import {
|
||||
UploadImportFileErrorCode,
|
||||
UploadImportFileSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
import { logger } from '../../utils/logger'
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
export * from './user'
|
||||
export * from './article'
|
||||
export * from './user_friends'
|
||||
export * from './user_feed_article'
|
||||
// export * from './user_friends'
|
||||
// export * from './user_feed_article'
|
||||
export * from './user_personalization'
|
||||
export * from './article_saving_request'
|
||||
export * from './upload_files'
|
||||
export * from './highlight'
|
||||
export * from './reaction'
|
||||
// export * from './reaction'
|
||||
export * from './report'
|
||||
export * from './links'
|
||||
export * from './newsletters'
|
||||
export * from './save'
|
||||
export * from './send_install_instructions'
|
||||
export * from './reminders'
|
||||
// export * from './reminders'
|
||||
export * from './user_device_tokens'
|
||||
export * from './labels'
|
||||
export * from './subscriptions'
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { Integration, IntegrationType } from '../../entity/integration'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
@ -19,6 +18,7 @@ import {
|
||||
SetIntegrationErrorCode,
|
||||
SetIntegrationSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { getIntegrationService } from '../../services/integrations'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { Between } from 'typeorm'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { createPubSubClient } from '../../datalayer/pubsub'
|
||||
import { getHighlightById } from '../../elastic/highlights'
|
||||
import {
|
||||
@ -8,7 +9,6 @@ import {
|
||||
updateLabelsInPage,
|
||||
} from '../../elastic/labels'
|
||||
import { getPageById } from '../../elastic/pages'
|
||||
import { getRepository, setClaims } from '../../entity'
|
||||
import { Label } from '../../entity/label'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
@ -38,7 +38,7 @@ import {
|
||||
UpdateLabelErrorCode,
|
||||
UpdateLabelSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { getRepository, setClaims } from '../../repository'
|
||||
import {
|
||||
createLabel,
|
||||
createLabels,
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { NewsletterEmail } from '../../entity/newsletter_email'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
@ -14,6 +13,7 @@ import {
|
||||
NewsletterEmailsErrorCode,
|
||||
NewsletterEmailsSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import {
|
||||
createNewsletterEmail,
|
||||
deleteNewsletterEmail,
|
||||
|
||||
@ -1,24 +1,19 @@
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
MutationAddPopularReadArgs,
|
||||
AddPopularReadError,
|
||||
AddPopularReadErrorCode,
|
||||
AddPopularReadSuccess,
|
||||
MutationAddPopularReadArgs,
|
||||
} from '../../generated/graphql'
|
||||
|
||||
import { authorized, userDataToUser } from '../../utils/helpers'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { userRepository } from '../../repository'
|
||||
import { addPopularRead } from '../../services/popular_reads'
|
||||
import { env } from '../../env'
|
||||
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
export const addPopularReadResolver = authorized<
|
||||
AddPopularReadSuccess,
|
||||
AddPopularReadError,
|
||||
MutationAddPopularReadArgs
|
||||
>(async (_, { name }, ctx) => {
|
||||
const {
|
||||
models,
|
||||
claims: { uid },
|
||||
} = ctx
|
||||
>(async (_, { name }, { uid }) => {
|
||||
analytics.track({
|
||||
userId: uid,
|
||||
event: 'popular_read_added',
|
||||
@ -28,7 +23,9 @@ export const addPopularReadResolver = authorized<
|
||||
},
|
||||
})
|
||||
|
||||
const user = userDataToUser(await models.user.get(uid))
|
||||
const user = await userRepository.findOneBy({
|
||||
id: uid,
|
||||
})
|
||||
if (!user) {
|
||||
return { errorCodes: [AddPopularReadErrorCode.Unauthorized] }
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import { ILike } from 'typeorm'
|
||||
import { getRepository } from '../../entity'
|
||||
import { NewsletterEmail } from '../../entity/newsletter_email'
|
||||
import { ReceivedEmail } from '../../entity/received_email'
|
||||
import { env } from '../../env'
|
||||
@ -12,6 +11,7 @@ import {
|
||||
RecentEmailsErrorCode,
|
||||
RecentEmailsSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { updateReceivedEmail } from '../../services/received_emails'
|
||||
import { saveNewsletterEmail } from '../../services/save_newsletter_email'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
@ -6,6 +5,7 @@ import {
|
||||
RecentSearchesErrorCode,
|
||||
RecentSearchesSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { getRecentSearches } from '../../services/search_history'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import { In } from 'typeorm'
|
||||
import { getPageByParam } from '../../elastic/pages'
|
||||
import { getRepository } from '../../entity'
|
||||
import { Group } from '../../entity/groups/group'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
@ -29,6 +28,7 @@ import {
|
||||
RecommendHighlightsSuccess,
|
||||
RecommendSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import {
|
||||
createGroup,
|
||||
createLabelAndRuleForGroup,
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { Rule } from '../../entity/rule'
|
||||
import { User } from '../../entity/user'
|
||||
import {
|
||||
@ -15,6 +14,7 @@ import {
|
||||
SetRuleErrorCode,
|
||||
SetRuleSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
|
||||
export const setRuleResolver = authorized<
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
@ -9,6 +8,7 @@ import {
|
||||
SaveErrorCode,
|
||||
SaveSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { saveFile } from '../../services/save_file'
|
||||
import { savePage } from '../../services/save_page'
|
||||
import { saveUrl } from '../../services/save_url'
|
||||
|
||||
@ -5,7 +5,7 @@ import {
|
||||
SendInstallInstructionsErrorCode,
|
||||
SendInstallInstructionsSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
import { sendEmail } from '../../utils/sendEmail'
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import Parser from 'rss-parser'
|
||||
import { Brackets } from 'typeorm'
|
||||
import { getRepository } from '../../entity'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { Subscription } from '../../entity/subscription'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
@ -26,7 +26,7 @@ import {
|
||||
UpdateSubscriptionErrorCode,
|
||||
UpdateSubscriptionSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { getRepository } from '../../repository'
|
||||
import { getSubscribeHandler, unsubscribe } from '../../services/subscriptions'
|
||||
import { Merge } from '../../util'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
|
||||
@ -6,8 +6,9 @@ import {
|
||||
UpdatePageErrorCode,
|
||||
UpdatePageSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { userRepository } from '../../repository'
|
||||
import { Merge } from '../../util'
|
||||
import { authorized, userDataToUser } from '../../utils/helpers'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
|
||||
export type UpdatePageSuccessPartial = Merge<
|
||||
UpdatePageSuccess,
|
||||
@ -19,21 +20,21 @@ export const updatePageResolver = authorized<
|
||||
UpdatePageError,
|
||||
MutationUpdatePageArgs
|
||||
>(async (_, { input }, ctx) => {
|
||||
const {
|
||||
models,
|
||||
claims: { uid },
|
||||
} = ctx
|
||||
|
||||
const user = userDataToUser(await models.user.get(uid))
|
||||
const { pubsub, uid } = ctx
|
||||
const user = await userRepository.findOneBy({ id: uid })
|
||||
if (!user) {
|
||||
return { errorCodes: [UpdatePageErrorCode.Unauthorized] }
|
||||
}
|
||||
|
||||
const page = await getPageById(input.pageId)
|
||||
|
||||
if (!page) return { errorCodes: [UpdatePageErrorCode.NotFound] }
|
||||
else if (page.userId !== user.id)
|
||||
if (!page) {
|
||||
return { errorCodes: [UpdatePageErrorCode.NotFound] }
|
||||
}
|
||||
|
||||
if (page.userId !== user.id) {
|
||||
return { errorCodes: [UpdatePageErrorCode.Unauthorized] }
|
||||
}
|
||||
|
||||
const pageData = {
|
||||
id: input.pageId,
|
||||
@ -47,7 +48,7 @@ export const updatePageResolver = authorized<
|
||||
}
|
||||
|
||||
const updateResult = await updatePage(input.pageId, pageData, {
|
||||
pubsub: ctx.pubsub,
|
||||
pubsub: pubsub,
|
||||
uid,
|
||||
refresh: true,
|
||||
})
|
||||
|
||||
@ -3,7 +3,6 @@ import normalizeUrl from 'normalize-url'
|
||||
import path from 'path'
|
||||
import { createPage, getPageByParam, updatePage } from '../../elastic/pages'
|
||||
import { PageType } from '../../elastic/types'
|
||||
import { uploadFileRepository } from '../../entity'
|
||||
import { UploadFile } from '../../entity/upload_file'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
@ -14,6 +13,7 @@ import {
|
||||
UploadFileRequestSuccess,
|
||||
UploadFileStatus,
|
||||
} from '../../generated/graphql'
|
||||
import { uploadFileRepository } from '../../repository'
|
||||
import { validateUrl } from '../../services/create_page_save_request'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { authorized, generateSlug } from '../../utils/helpers'
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import { RegistrationType } from '../../datalayer/user/model'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { deletePagesByParam } from '../../elastic/pages'
|
||||
import { setClaims, userRepository } from '../../entity'
|
||||
import { User as UserEntity } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import {
|
||||
@ -38,7 +38,7 @@ import {
|
||||
UsersError,
|
||||
UsersSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { setClaims, userRepository } from '../../repository'
|
||||
import { createUser, getTopUsers } from '../../services/create_user'
|
||||
import { sendVerificationEmail } from '../../services/send_emails'
|
||||
import { authorized, userDataToUser } from '../../utils/helpers'
|
||||
@ -49,7 +49,7 @@ export const updateUserResolver = authorized<
|
||||
UpdateUserSuccess,
|
||||
UpdateUserError,
|
||||
MutationUpdateUserArgs
|
||||
>(async (_, { input: { name, bio } }, { uid }) => {
|
||||
>(async (_, { input: { name, bio } }, { uid, authTrx }) => {
|
||||
const user = await userRepository.findOneBy({
|
||||
id: uid,
|
||||
})
|
||||
@ -71,15 +71,16 @@ export const updateUserResolver = authorized<
|
||||
return { errorCodes }
|
||||
}
|
||||
|
||||
const updatedUser = await userRepository.save({
|
||||
id: uid,
|
||||
name,
|
||||
source: user.source,
|
||||
sourceUserId: user.sourceUserId,
|
||||
profile: {
|
||||
bio,
|
||||
},
|
||||
})
|
||||
const updatedUser = await authTrx((tx) =>
|
||||
tx.getRepository(UserEntity).save({
|
||||
...user,
|
||||
name,
|
||||
profile: {
|
||||
...user.profile,
|
||||
bio,
|
||||
},
|
||||
})
|
||||
)
|
||||
|
||||
return { user: userDataToUser(updatedUser) }
|
||||
})
|
||||
@ -88,7 +89,7 @@ export const updateUserProfileResolver = authorized<
|
||||
UpdateUserProfileSuccess,
|
||||
UpdateUserProfileError,
|
||||
MutationUpdateUserProfileArgs
|
||||
>(async (_, { input: { userId, username, pictureUrl } }, { uid }) => {
|
||||
>(async (_, { input: { userId, username, pictureUrl } }, { uid, authTrx }) => {
|
||||
const user = await userRepository.findOneBy({
|
||||
id: userId,
|
||||
})
|
||||
@ -128,13 +129,16 @@ export const updateUserProfileResolver = authorized<
|
||||
}
|
||||
}
|
||||
|
||||
const updatedUser = await userRepository.save({
|
||||
id: uid,
|
||||
profile: {
|
||||
username: lowerCasedUsername,
|
||||
pictureUrl,
|
||||
},
|
||||
})
|
||||
const updatedUser = await authTrx((tx) =>
|
||||
tx.getRepository(UserEntity).save({
|
||||
...user,
|
||||
profile: {
|
||||
...user.profile,
|
||||
username: lowerCasedUsername,
|
||||
pictureUrl,
|
||||
},
|
||||
})
|
||||
)
|
||||
|
||||
return { user: userDataToUser(updatedUser) }
|
||||
})
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { getRepository, setClaims } from '../../entity'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { UserPersonalization } from '../../entity/user_personalization'
|
||||
import {
|
||||
GetUserPersonalizationError,
|
||||
@ -9,7 +9,7 @@ import {
|
||||
SetUserPersonalizationSuccess,
|
||||
SortOrder,
|
||||
} from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { getRepository, setClaims } from '../../repository'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
|
||||
export const setUserPersonalizationResolver = authorized<
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import { getRepository } from '../../entity'
|
||||
import { User } from '../../entity/user'
|
||||
import { Webhook } from '../../entity/webhook'
|
||||
import { env } from '../../env'
|
||||
@ -21,6 +20,7 @@ import {
|
||||
WebhooksSuccess,
|
||||
WebhookSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { analytics } from '../../utils/analytics'
|
||||
import { authorized } from '../../utils/helpers'
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import express from 'express'
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import { createPubSubClient } from '../datalayer/pubsub'
|
||||
import { getPageById, updatePage } from '../elastic/pages'
|
||||
import { getRepository } from '../entity'
|
||||
import { getRepository } from '../repository'
|
||||
import { Speech, SpeechState } from '../entity/speech'
|
||||
import { env } from '../env'
|
||||
import { CreateArticleErrorCode } from '../generated/graphql'
|
||||
|
||||
@ -14,6 +14,7 @@ import express from 'express'
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import url from 'url'
|
||||
import { promisify } from 'util'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { kx } from '../../datalayer/knex_config'
|
||||
import UserModel from '../../datalayer/user'
|
||||
import {
|
||||
@ -21,12 +22,11 @@ import {
|
||||
StatusType,
|
||||
UserData,
|
||||
} from '../../datalayer/user/model'
|
||||
import { getRepository, setClaims } from '../../entity'
|
||||
import { User } from '../../entity/user'
|
||||
import { env } from '../../env'
|
||||
import { LoginErrorCode, SignupErrorCode } from '../../generated/graphql'
|
||||
import { getRepository, setClaims } from '../../repository'
|
||||
import { isErrorWithCode } from '../../resolvers'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { createUser, getUserByEmail } from '../../services/create_user'
|
||||
import {
|
||||
sendConfirmationEmail,
|
||||
|
||||
@ -9,7 +9,7 @@ import { createPubSubClient } from '../datalayer/pubsub'
|
||||
import { createPage, getPageByParam, updatePage } from '../elastic/pages'
|
||||
import { addRecommendation } from '../elastic/recommendation'
|
||||
import { Recommendation } from '../elastic/types'
|
||||
import { uploadFileRepository } from '../entity'
|
||||
import { uploadFileRepository } from '../repository'
|
||||
import { env } from '../env'
|
||||
import {
|
||||
ArticleSavingRequestStatus,
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
||||
import express from 'express'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import {
|
||||
createPubSubClient,
|
||||
readPushSubscription,
|
||||
} from '../../datalayer/pubsub'
|
||||
import { getPageByParam, updatePage } from '../../elastic/pages'
|
||||
import { Page } from '../../elastic/types'
|
||||
import { setClaims } from '../../entity'
|
||||
import { ArticleSavingRequestStatus } from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { setClaims } from '../../repository'
|
||||
import { setFileUploadComplete } from '../../services/save_file'
|
||||
import { logger } from '../../utils/logger'
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import express from 'express'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { createPubSubClient } from '../../datalayer/pubsub'
|
||||
import { createPage } from '../../elastic/pages'
|
||||
import { ArticleSavingRequestStatus, Page } from '../../elastic/types'
|
||||
import { setClaims, uploadFileRepository } from '../../entity'
|
||||
import { env } from '../../env'
|
||||
import { PageType, UploadFileStatus } from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { setClaims, uploadFileRepository } from '../../repository'
|
||||
import { getNewsletterEmail } from '../../services/newsletters'
|
||||
import { updateReceivedEmail } from '../../services/received_emails'
|
||||
import { setFileUploadComplete } from '../../services/save_file'
|
||||
|
||||
@ -8,8 +8,8 @@ import { v4 as uuidv4 } from 'uuid'
|
||||
import { EntityType, readPushSubscription } from '../../datalayer/pubsub'
|
||||
import { getPageById, searchPages } from '../../elastic/pages'
|
||||
import { Page } from '../../elastic/types'
|
||||
import { getRepository } from '../../entity'
|
||||
import { Integration, IntegrationType } from '../../entity/integration'
|
||||
import { getRepository } from '../../repository'
|
||||
import { Claims } from '../../resolvers/types'
|
||||
import { getIntegrationService } from '../../services/integrations'
|
||||
import { getClaimsByToken } from '../../utils/auth'
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { MulticastMessage } from 'firebase-admin/messaging'
|
||||
import { AppDataSource } from '../../data-source'
|
||||
import { createPubSubClient } from '../../datalayer/pubsub'
|
||||
import { updatePage } from '../../elastic/pages'
|
||||
import { setClaims } from '../../entity'
|
||||
import { UserDeviceToken } from '../../entity/user_device_tokens'
|
||||
import { homePageURL } from '../../env'
|
||||
import { ContentReader } from '../../generated/graphql'
|
||||
import { AppDataSource } from '../../server'
|
||||
import { setClaims } from '../../repository'
|
||||
import { PageReminder, setRemindersComplete } from '../../services/reminders'
|
||||
|
||||
interface PageToNotify {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
/* eslint-disable @typescript-eslint/no-misused-promises */
|
||||
import express from 'express'
|
||||
import { readPushSubscription } from '../../datalayer/pubsub'
|
||||
import { getRepository } from '../../entity'
|
||||
import { Subscription } from '../../entity/subscription'
|
||||
import { SubscriptionStatus, SubscriptionType } from '../../generated/graphql'
|
||||
import { getRepository } from '../../repository'
|
||||
import { enqueueRssFeedFetch } from '../../utils/createTask'
|
||||
import { logger } from '../../utils/logger'
|
||||
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
import axios, { Method } from 'axios'
|
||||
import express from 'express'
|
||||
import { readPushSubscription } from '../../datalayer/pubsub'
|
||||
import { getRepository } from '../../entity'
|
||||
import { Webhook } from '../../entity/webhook'
|
||||
import { getRepository } from '../../repository'
|
||||
import { logger } from '../../utils/logger'
|
||||
|
||||
export function webhooksServiceRouter() {
|
||||
|
||||
@ -7,10 +7,10 @@ import express from 'express'
|
||||
import { readPushSubscription } from '../datalayer/pubsub'
|
||||
import { getPageById } from '../elastic/pages'
|
||||
import { ArticleSavingRequestStatus } from '../elastic/types'
|
||||
import { getRepository, setClaims } from '../entity'
|
||||
import { getRepository, setClaims } from '../repository'
|
||||
import { Speech, SpeechState } from '../entity/speech'
|
||||
import { UserPersonalization } from '../entity/user_personalization'
|
||||
import { AppDataSource } from '../server'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { FeatureName, getFeature } from '../services/features'
|
||||
import { shouldSynthesize } from '../services/speech'
|
||||
import { getClaimsByToken } from '../utils/auth'
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
import cors from 'cors'
|
||||
import express from 'express'
|
||||
import { getRepository } from '../entity'
|
||||
import { getRepository } from '../repository'
|
||||
import { User } from '../entity/user'
|
||||
import { env } from '../env'
|
||||
import { getClaimsByToken, getTokenByRequest } from '../utils/auth'
|
||||
|
||||
@ -11,10 +11,9 @@ import express, { Express } from 'express'
|
||||
import * as httpContext from 'express-http-context2'
|
||||
import rateLimit from 'express-rate-limit'
|
||||
import { createServer, Server } from 'http'
|
||||
import { DataSource } from 'typeorm'
|
||||
import { SnakeNamingStrategy } from 'typeorm-naming-strategies'
|
||||
import { config, loggers } from 'winston'
|
||||
import { makeApolloServer } from './apollo'
|
||||
import { AppDataSource } from './data-source'
|
||||
import { initElasticsearch } from './elastic'
|
||||
import { env } from './env'
|
||||
import { articleRouter } from './routers/article_router'
|
||||
@ -39,32 +38,10 @@ import { userRouter } from './routers/user_router'
|
||||
import { sentryConfig } from './sentry'
|
||||
import { getClaimsByToken, getTokenByRequest } from './utils/auth'
|
||||
import { corsConfig } from './utils/corsConfig'
|
||||
import {
|
||||
buildLogger,
|
||||
buildLoggerTransport,
|
||||
CustomTypeOrmLogger,
|
||||
} from './utils/logger'
|
||||
import { buildLogger, buildLoggerTransport } from './utils/logger'
|
||||
|
||||
const PORT = process.env.PORT || 4000
|
||||
|
||||
export const AppDataSource = new DataSource({
|
||||
type: 'postgres',
|
||||
host: env.pg.host,
|
||||
port: env.pg.port,
|
||||
schema: 'omnivore',
|
||||
username: env.pg.userName,
|
||||
password: env.pg.password,
|
||||
database: env.pg.dbName,
|
||||
logging: ['query', 'info'],
|
||||
entities: [__dirname + '/entity/**/*{.js,.ts}'],
|
||||
subscribers: [__dirname + '/events/**/*{.js,.ts}'],
|
||||
namingStrategy: new SnakeNamingStrategy(),
|
||||
logger: new CustomTypeOrmLogger(),
|
||||
cache: true,
|
||||
connectTimeoutMS: 60000, // 60 seconds
|
||||
maxQueryExecutionTime: 60000, // 60 seconds
|
||||
})
|
||||
|
||||
export const createApp = (): {
|
||||
app: Express
|
||||
apollo: ApolloServer
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { setClaims } from '../entity'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { Link } from '../entity/link'
|
||||
import { AppDataSource } from '../server'
|
||||
import { setClaims } from '../repository'
|
||||
|
||||
export const setLinkArchived = async (
|
||||
userId: string,
|
||||
|
||||
@ -8,12 +8,12 @@ import {
|
||||
updatePage,
|
||||
} from '../elastic/pages'
|
||||
import { ArticleSavingRequestStatus, Label, PageType } from '../elastic/types'
|
||||
import { getRepository } from '../entity'
|
||||
import { User } from '../entity/user'
|
||||
import {
|
||||
ArticleSavingRequest,
|
||||
CreateArticleSavingRequestErrorCode,
|
||||
} from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import { enqueueParseRequest } from '../utils/createTask'
|
||||
import {
|
||||
cleanUrl,
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import { EntityManager, In } from 'typeorm'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { StatusType } from '../datalayer/user/model'
|
||||
import { getRepository, userRepository } from '../entity'
|
||||
import { GroupMembership } from '../entity/groups/group_membership'
|
||||
import { Invite } from '../entity/groups/invite'
|
||||
import { Profile } from '../entity/profile'
|
||||
import { User } from '../entity/user'
|
||||
import { SignupErrorCode } from '../generated/graphql'
|
||||
import { getRepository, userRepository } from '../repository'
|
||||
import { AuthProvider } from '../routers/auth/auth_types'
|
||||
import { AppDataSource } from '../server'
|
||||
import { logger } from '../utils/logger'
|
||||
import { validateUsername } from '../utils/usernamePolicy'
|
||||
import { sendConfirmationEmail } from './send_emails'
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import { IsNull, Not } from 'typeorm'
|
||||
import { getRepository } from '../entity'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { Feature } from '../entity/feature'
|
||||
import { env } from '../env'
|
||||
import { AppDataSource } from '../server'
|
||||
import { getRepository } from '../repository'
|
||||
import { logger } from '../utils/logger'
|
||||
|
||||
export enum FeatureName {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { getRepository } from '../entity'
|
||||
import { Follower } from '../entity/follower'
|
||||
import { User } from '../entity/user'
|
||||
import { getRepository } from '../repository'
|
||||
|
||||
export const getUserFollowers = async (
|
||||
user: User,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { nanoid } from 'nanoid'
|
||||
import { getRepository } from '../entity'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { Group } from '../entity/groups/group'
|
||||
import { GroupMembership } from '../entity/groups/group_membership'
|
||||
import { Invite } from '../entity/groups/invite'
|
||||
@ -7,7 +7,7 @@ import { RuleActionType } from '../entity/rule'
|
||||
import { User } from '../entity/user'
|
||||
import { homePageURL } from '../env'
|
||||
import { RecommendationGroup, User as GraphqlUser } from '../generated/graphql'
|
||||
import { AppDataSource } from '../server'
|
||||
import { getRepository } from '../repository'
|
||||
import { userDataToUser } from '../utils/helpers'
|
||||
import { createLabel, getLabelByName } from './labels'
|
||||
import { createRule } from './rules'
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import axios from 'axios'
|
||||
import { HighlightType, Page } from '../../elastic/types'
|
||||
import { getRepository } from '../../entity'
|
||||
import { getRepository } from '../../repository'
|
||||
import { Integration } from '../../entity/integration'
|
||||
import { env } from '../../env'
|
||||
import { wait } from '../../utils/helpers'
|
||||
|
||||
@ -2,11 +2,11 @@ import DataLoader from 'dataloader'
|
||||
import { In } from 'typeorm'
|
||||
import { addLabelInPage } from '../elastic/labels'
|
||||
import { PageContext } from '../elastic/types'
|
||||
import { getRepository } from '../entity'
|
||||
import { Label } from '../entity/label'
|
||||
import { Link } from '../entity/link'
|
||||
import { User } from '../entity/user'
|
||||
import { CreateLabelInput } from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import { generateRandomColor } from '../utils/helpers'
|
||||
import { logger } from '../utils/logger'
|
||||
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import { nanoid } from 'nanoid'
|
||||
import { getRepository } from '../entity'
|
||||
import { NewsletterEmail } from '../entity/newsletter_email'
|
||||
import { User } from '../entity/user'
|
||||
import { env } from '../env'
|
||||
@ -7,6 +6,7 @@ import {
|
||||
CreateNewsletterEmailErrorCode,
|
||||
SubscriptionStatus,
|
||||
} from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import addressparser = require('nodemailer/lib/addressparser')
|
||||
|
||||
const parsedAddress = (emailAddress: string): string | undefined => {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { getRepository } from '../entity'
|
||||
import { ReceivedEmail } from '../entity/received_email'
|
||||
import { getRepository } from '../repository'
|
||||
|
||||
export const saveReceivedEmail = async (
|
||||
from: string,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { EntityManager, IsNull, Not } from 'typeorm'
|
||||
import { getPageById } from '../elastic/pages'
|
||||
import { getRepository } from '../entity'
|
||||
import { Reminder } from '../entity/reminder'
|
||||
import { getRepository } from '../repository'
|
||||
import { logger } from '../utils/logger'
|
||||
|
||||
export interface PageReminder {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { getPageById } from '../elastic/pages'
|
||||
import { getRepository } from '../entity'
|
||||
import { AbuseReport } from '../entity/reports/abuse_report'
|
||||
import { ContentDisplayReport } from '../entity/reports/content_display_report'
|
||||
import { ReportItemInput, ReportType } from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import { logger } from '../utils/logger'
|
||||
|
||||
export const saveContentDisplayReport = async (
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ILike } from 'typeorm'
|
||||
import { getRepository } from '../entity'
|
||||
import { Rule, RuleAction } from '../entity/rule'
|
||||
import { getRepository } from '../repository'
|
||||
|
||||
export const createRule = async (
|
||||
userId: string,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { UserData } from '../datalayer/user/model'
|
||||
import { updatePage } from '../elastic/pages'
|
||||
import { getRepository } from '../entity'
|
||||
import { UploadFile } from '../entity/upload_file'
|
||||
import { homePageURL } from '../env'
|
||||
import {
|
||||
@ -9,8 +9,8 @@ import {
|
||||
SaveFileInput,
|
||||
SaveResult,
|
||||
} from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import { WithDataSourcesContext } from '../resolvers/types'
|
||||
import { AppDataSource } from '../server'
|
||||
import { logger } from '../utils/logger'
|
||||
import { getStorageFileDetails } from '../utils/uploads'
|
||||
import { createLabels } from './labels'
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { PubsubClient } from '../datalayer/pubsub'
|
||||
import { ArticleSavingRequestStatus } from '../elastic/types'
|
||||
import { getRepository } from '../entity'
|
||||
import { User } from '../entity/user'
|
||||
import { homePageURL } from '../env'
|
||||
import { SaveErrorCode, SaveResult, SaveUrlInput } from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import { logger } from '../utils/logger'
|
||||
import { createPageSaveRequest } from './create_page_save_request'
|
||||
import { createLabels } from './labels'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { getRepository } from '../entity'
|
||||
import { SearchHistory } from '../entity/search_history'
|
||||
import { getRepository } from '../repository'
|
||||
|
||||
export const getRecentSearches = async (
|
||||
userId: string
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import axios from 'axios'
|
||||
import { getRepository } from '../entity'
|
||||
import { NewsletterEmail } from '../entity/newsletter_email'
|
||||
import { Subscription } from '../entity/subscription'
|
||||
import { SubscriptionStatus, SubscriptionType } from '../generated/graphql'
|
||||
import { getRepository } from '../repository'
|
||||
import { logger } from '../utils/logger'
|
||||
import { sendEmail } from '../utils/sendEmail'
|
||||
import { createNewsletterEmail } from './newsletters'
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { getRepository, setClaims } from '../entity'
|
||||
import { AppDataSource } from '../data-source'
|
||||
import { User } from '../entity/user'
|
||||
import { UserDeviceToken } from '../entity/user_device_tokens'
|
||||
import { env } from '../env'
|
||||
import { SetDeviceTokenErrorCode } from '../generated/graphql'
|
||||
import { AppDataSource } from '../server'
|
||||
import { getRepository, setClaims } from '../repository'
|
||||
import { analytics } from '../utils/analytics'
|
||||
|
||||
export const getDeviceToken = async (
|
||||
|
||||
@ -4,7 +4,7 @@ import express from 'express'
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import { promisify } from 'util'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { getRepository } from '../entity'
|
||||
import { getRepository } from '../repository'
|
||||
import { ApiKey } from '../entity/api_key'
|
||||
import { env } from '../env'
|
||||
import { Claims, ClaimsToSet } from '../resolvers/types'
|
||||
|
||||
@ -148,7 +148,6 @@ export const userDataToUser = (
|
||||
profile: Profile
|
||||
} => ({
|
||||
...user,
|
||||
name: user.name,
|
||||
source: user.source as RegistrationType,
|
||||
createdAt: user.createdAt || new Date(),
|
||||
friendsCount: user.friendsCount || 0,
|
||||
|
||||
@ -16,7 +16,7 @@ import { ILike } from 'typeorm'
|
||||
import { promisify } from 'util'
|
||||
import { v4 as uuid } from 'uuid'
|
||||
import { Highlight } from '../elastic/types'
|
||||
import { getRepository } from '../entity'
|
||||
import { getRepository } from '../repository'
|
||||
import { User } from '../entity/user'
|
||||
import { env } from '../env'
|
||||
import { PageType, PreparedDocumentInput } from '../generated/graphql'
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import Postgrator from 'postgrator'
|
||||
import { FindOptionsWhere } from 'typeorm'
|
||||
import { SnakeNamingStrategy } from 'typeorm-naming-strategies'
|
||||
import { getRepository, setClaims } from '../src/entity'
|
||||
import { getRepository, setClaims, userRepository } from '../src/repository'
|
||||
import { Integration } from '../src/entity/integration'
|
||||
import { Label } from '../src/entity/label'
|
||||
import { Link } from '../src/entity/link'
|
||||
@ -13,7 +13,7 @@ import { Subscription } from '../src/entity/subscription'
|
||||
import { User } from '../src/entity/user'
|
||||
import { UserDeviceToken } from '../src/entity/user_device_tokens'
|
||||
import { SubscriptionStatus, SubscriptionType } from '../src/generated/graphql'
|
||||
import { AppDataSource } from '../src/server'
|
||||
import { AppDataSource } from '../src/data-source'
|
||||
import { createUser } from '../src/services/create_user'
|
||||
import { Filter } from "../src/entity/filter"
|
||||
|
||||
@ -189,7 +189,7 @@ export const getDeviceToken = async (
|
||||
}
|
||||
|
||||
export const getUser = async (id: string): Promise<User | null> => {
|
||||
return getRepository(User).findOneBy({ id })
|
||||
return userRepository.findOneBy({ id })
|
||||
}
|
||||
|
||||
export const getLink = async (id: string): Promise<Link | null> => {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { AppDataSource } from '../src/server'
|
||||
import { AppDataSource } from '../src/data-source'
|
||||
import { stopApolloServer } from './util'
|
||||
import { kx } from '../src/datalayer/knex_config'
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { User } from '../../src/entity/user'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
import { expect } from 'chai'
|
||||
import supertest from 'supertest'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { ApiKey } from '../../src/entity/api_key'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
|
||||
const testAPIKey = (apiKey: string): supertest.Test => {
|
||||
const query = `
|
||||
|
||||
@ -22,7 +22,6 @@ import {
|
||||
PageContext,
|
||||
PageType,
|
||||
} from '../../src/elastic/types'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { UploadFile } from '../../src/entity/upload_file'
|
||||
import { User } from '../../src/entity/user'
|
||||
import {
|
||||
@ -31,6 +30,7 @@ import {
|
||||
UpdateReason,
|
||||
UploadFileStatus,
|
||||
} from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import * as createTask from '../../src/utils/createTask'
|
||||
import * as uploads from '../../src/utils/uploads'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
|
||||
@ -2,10 +2,10 @@ import { expect } from 'chai'
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import 'mocha'
|
||||
import sinon, { SinonFakeTimers } from 'sinon'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { Feature } from '../../src/entity/feature'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { env } from '../../src/env'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
import chai, { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import nock from 'nock'
|
||||
import sinonChai from 'sinon-chai'
|
||||
import { Integration } from '../../src/entity/integration'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { SetIntegrationErrorCode } from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { READWISE_API_URL } from '../../src/services/integrations/readwise'
|
||||
import { createTestUser, deleteTestIntegrations, deleteTestUser } from '../db'
|
||||
import { generateFakeUuid, graphqlRequest, request } from '../util'
|
||||
import { SetIntegrationErrorCode } from '../../src/generated/graphql'
|
||||
import chai, { expect } from 'chai'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { Integration } from '../../src/entity/integration'
|
||||
import nock from 'nock'
|
||||
import { READWISE_API_URL } from '../../src/services/integrations/readwise'
|
||||
import sinonChai from 'sinon-chai'
|
||||
|
||||
chai.use(sinonChai)
|
||||
|
||||
|
||||
@ -1,3 +1,21 @@
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { createPubSubClient } from '../../src/datalayer/pubsub'
|
||||
import { refreshIndex } from '../../src/elastic'
|
||||
import {
|
||||
addHighlightToPage,
|
||||
getHighlightById,
|
||||
} from '../../src/elastic/highlights'
|
||||
import { deletePage, getPageById } from '../../src/elastic/pages'
|
||||
import {
|
||||
Highlight,
|
||||
HighlightType,
|
||||
Page,
|
||||
PageContext,
|
||||
} from '../../src/elastic/types'
|
||||
import { Label } from '../../src/entity/label'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import {
|
||||
createTestLabel,
|
||||
createTestUser,
|
||||
@ -10,24 +28,6 @@ import {
|
||||
graphqlRequest,
|
||||
request,
|
||||
} from '../util'
|
||||
import { Label } from '../../src/entity/label'
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { User } from '../../src/entity/user'
|
||||
import {
|
||||
Highlight,
|
||||
HighlightType,
|
||||
Page,
|
||||
PageContext,
|
||||
} from '../../src/elastic/types'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { deletePage, getPageById } from '../../src/elastic/pages'
|
||||
import { createPubSubClient } from '../../src/datalayer/pubsub'
|
||||
import {
|
||||
addHighlightToPage,
|
||||
getHighlightById,
|
||||
} from '../../src/elastic/highlights'
|
||||
import { refreshIndex } from '../../src/elastic'
|
||||
|
||||
describe('Labels API', () => {
|
||||
let user: User
|
||||
|
||||
@ -1,3 +1,12 @@
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { NewsletterEmail } from '../../src/entity/newsletter_email'
|
||||
import { User } from '../../src/entity/user'
|
||||
import {
|
||||
DeleteNewsletterEmailErrorCode,
|
||||
SubscriptionStatus,
|
||||
} from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import {
|
||||
createTestNewsletterEmail,
|
||||
createTestSubscription,
|
||||
@ -6,15 +15,6 @@ import {
|
||||
getNewsletterEmail,
|
||||
} from '../db'
|
||||
import { generateFakeUuid, graphqlRequest, request } from '../util'
|
||||
import { NewsletterEmail } from '../../src/entity/newsletter_email'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { expect } from 'chai'
|
||||
import {
|
||||
DeleteNewsletterEmailErrorCode,
|
||||
SubscriptionStatus,
|
||||
} from '../../src/generated/graphql'
|
||||
import 'mocha'
|
||||
import { getRepository } from '../../src/entity'
|
||||
|
||||
describe('Newsletters API', () => {
|
||||
let user: User
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import 'mocha'
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import sinon from 'sinon'
|
||||
import { NewsletterEmail } from '../../src/entity/newsletter_email'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import * as sendEmail from '../../src/utils/sendEmail'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
import { NewsletterEmail } from '../../src/entity/newsletter_email'
|
||||
import sinon from 'sinon'
|
||||
import * as sendEmail from '../../src/utils/sendEmail'
|
||||
|
||||
describe('Recent Emails Resolver', () => {
|
||||
const recentEmailsQuery = `
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import 'mocha'
|
||||
import { expect } from 'chai'
|
||||
import { User } from '../../src/entity/user'
|
||||
import 'mocha'
|
||||
import { createPubSubClient } from '../../src/datalayer/pubsub'
|
||||
import { PageContext } from '../../src/elastic/types'
|
||||
import { SearchHistory } from '../../src/entity/search_history'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
import { createPubSubClient } from '../../src/datalayer/pubsub'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { SearchHistory } from '../../src/entity/search_history'
|
||||
|
||||
describe('recent_searches resolver', () => {
|
||||
let user: User
|
||||
|
||||
@ -22,7 +22,7 @@ import { DateTime } from 'luxon'
|
||||
import 'mocha'
|
||||
import { Page } from '../../src/elastic/types'
|
||||
|
||||
describe('Reminders API', () => {
|
||||
xdescribe('Reminders API', () => {
|
||||
let authToken: string
|
||||
let page: Page
|
||||
let reminder: Reminder
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { User } from '../../src/entity/user'
|
||||
import { expect } from 'chai'
|
||||
import { Page } from '../../src/elastic/types'
|
||||
import { ContentDisplayReport } from '../../src/entity/reports/content_display_report'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { ReportType } from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { createTestElasticPage, graphqlRequest, request } from '../util'
|
||||
import { ReportType } from '../../src/generated/graphql'
|
||||
import { ContentDisplayReport } from '../../src/entity/reports/content_display_report'
|
||||
import { expect } from 'chai'
|
||||
import { getRepository } from '../../src/entity'
|
||||
|
||||
describe('Report API', () => {
|
||||
let user: User
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import 'mocha'
|
||||
import { expect } from 'chai'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import 'mocha'
|
||||
import { Rule, RuleAction, RuleActionType } from '../../src/entity/rule'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
|
||||
describe('Rules Resolver', () => {
|
||||
const username = 'fakeUser'
|
||||
|
||||
@ -5,15 +5,15 @@ import sinonChai from 'sinon-chai'
|
||||
import { NewsletterEmail } from '../../src/entity/newsletter_email'
|
||||
import { Subscription } from '../../src/entity/subscription'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import {
|
||||
SubscriptionStatus,
|
||||
SubscriptionType,
|
||||
} from '../../src/generated/graphql'
|
||||
import {
|
||||
UNSUBSCRIBE_EMAIL_TEXT,
|
||||
unsubscribe,
|
||||
} from '../../src/services/subscriptions'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { UNSUBSCRIBE_EMAIL_TEXT } from '../../src/services/subscriptions'
|
||||
import * as sendEmail from '../../src/utils/sendEmail'
|
||||
import { createTestSubscription, createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
|
||||
@ -1,3 +1,9 @@
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { UserDeviceToken } from '../../src/entity/user_device_tokens'
|
||||
import { SetDeviceTokenErrorCode } from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import {
|
||||
createTestDeviceToken,
|
||||
createTestUser,
|
||||
@ -6,12 +12,6 @@ import {
|
||||
getDeviceToken,
|
||||
} from '../db'
|
||||
import { generateFakeUuid, graphqlRequest, request } from '../util'
|
||||
import { expect } from 'chai'
|
||||
import { UserDeviceToken } from '../../src/entity/user_device_tokens'
|
||||
import { SetDeviceTokenErrorCode } from '../../src/generated/graphql'
|
||||
import 'mocha'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/entity'
|
||||
|
||||
describe('Device tokens API', () => {
|
||||
let authToken: string
|
||||
|
||||
@ -1,3 +1,11 @@
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { Highlight } from '../../src/entity/highlight'
|
||||
import { Link } from '../../src/entity/link'
|
||||
import { Page } from '../../src/entity/page'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { SharedArticleErrorCode } from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import {
|
||||
createTestLink,
|
||||
createTestPage,
|
||||
@ -5,16 +13,8 @@ import {
|
||||
deleteTestUser,
|
||||
} from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
import { expect } from 'chai'
|
||||
import { SharedArticleErrorCode } from '../../src/generated/graphql'
|
||||
import { Page } from '../../src/entity/page'
|
||||
import { Link } from '../../src/entity/link'
|
||||
import { Highlight } from '../../src/entity/highlight'
|
||||
import 'mocha'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { User } from '../../src/entity/user'
|
||||
|
||||
describe('User feed article API', () => {
|
||||
xdescribe('User feed article API', () => {
|
||||
const existingUsername = 'fakeUser'
|
||||
let user: User
|
||||
let authToken: string
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { WebhookEvent } from '../../src/generated/graphql'
|
||||
import { Webhook } from '../../src/entity/webhook'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { WebhookEvent } from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { graphqlRequest, request } from '../util'
|
||||
|
||||
describe('Webhooks API', () => {
|
||||
let user: User
|
||||
|
||||
@ -5,8 +5,8 @@ import sinonChai from 'sinon-chai'
|
||||
import supertest from 'supertest'
|
||||
import { StatusType } from '../../src/datalayer/user/model'
|
||||
import { searchPages } from '../../src/elastic/pages'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { AuthProvider } from '../../src/routers/auth/auth_types'
|
||||
import { createPendingUserToken } from '../../src/routers/auth/jwt_helpers'
|
||||
import {
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
import { expect } from 'chai'
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
import 'mocha'
|
||||
import sinon from 'sinon'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import * as parser from '../../src/utils/parser'
|
||||
import * as sendEmail from '../../src/utils/sendEmail'
|
||||
import * as sendNotification from '../../src/utils/sendNotification'
|
||||
import {
|
||||
createTestNewsletterEmail,
|
||||
createTestUser,
|
||||
deleteTestUser,
|
||||
} from '../db'
|
||||
import { User } from '../../src/entity/user'
|
||||
import 'mocha'
|
||||
import sinon from 'sinon'
|
||||
import { expect } from 'chai'
|
||||
import { request } from '../util'
|
||||
import * as parser from '../../src/utils/parser'
|
||||
import * as sendNotification from '../../src/utils/sendNotification'
|
||||
import * as sendEmail from '../../src/utils/sendEmail'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
import * as jwt from 'jsonwebtoken'
|
||||
|
||||
describe('Emails Router', () => {
|
||||
const newsletterEmail = 'fakeUser@omnivore.app'
|
||||
|
||||
@ -16,10 +16,10 @@ import {
|
||||
Page,
|
||||
PageContext,
|
||||
} from '../../src/elastic/types'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { Integration, IntegrationType } from '../../src/entity/integration'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { env } from '../../src/env'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { getHighlightUrl } from '../../src/services/highlights'
|
||||
import { READWISE_API_URL } from '../../src/services/integrations/readwise'
|
||||
import { createTestUser, deleteTestIntegrations, deleteTestUser } from '../db'
|
||||
|
||||
@ -12,7 +12,7 @@ import { Reminder } from '../../src/entity/reminder'
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
|
||||
describe('Reminders Router', () => {
|
||||
xdescribe('Reminders Router', () => {
|
||||
let authToken: string
|
||||
let user: User
|
||||
let reminder: Reminder
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import nock from 'nock'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { Webhook } from '../../src/entity/webhook'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { request } from '../util'
|
||||
import { User } from '../../src/entity/user'
|
||||
import 'mocha'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { Webhook } from '../../src/entity/webhook'
|
||||
import { expect } from 'chai'
|
||||
import nock from 'nock'
|
||||
|
||||
describe('Webhooks Router', () => {
|
||||
const token = process.env.PUBSUB_VERIFICATION_TOKEN || ''
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
import 'mocha'
|
||||
import chai, { expect } from 'chai'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import 'mocha'
|
||||
import sinonChai from 'sinon-chai'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { ContentDisplayReport } from '../../src/entity/reports/content_display_report'
|
||||
import { saveContentDisplayReport } from '../../src/services/reports'
|
||||
import { ReportType } from '../../src/generated/graphql'
|
||||
import { createTestElasticPage } from '../util'
|
||||
import { Page } from '../../src/elastic/types'
|
||||
import { ContentDisplayReport } from '../../src/entity/reports/content_display_report'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { ReportType } from '../../src/generated/graphql'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { saveContentDisplayReport } from '../../src/services/reports'
|
||||
import { createTestUser, deleteTestUser } from '../db'
|
||||
import { createTestElasticPage } from '../util'
|
||||
|
||||
chai.use(sinonChai)
|
||||
|
||||
|
||||
@ -1,24 +1,22 @@
|
||||
import 'mocha'
|
||||
import { MailDataRequired } from '@sendgrid/helpers/classes/mail'
|
||||
import chai, { expect } from 'chai'
|
||||
import {
|
||||
createTestUser,
|
||||
createUserWithoutProfile, deleteFiltersFromUser,
|
||||
deleteTestUser,
|
||||
getProfile
|
||||
} from "../db"
|
||||
import { createGroup } from '../../src/services/groups'
|
||||
import 'mocha'
|
||||
import sinon from 'sinon'
|
||||
import sinonChai from 'sinon-chai'
|
||||
import { StatusType, User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import {
|
||||
getUserFollowers,
|
||||
getUserFollowing,
|
||||
} from '../../src/services/followers'
|
||||
import sinonChai from 'sinon-chai'
|
||||
import sinon from 'sinon'
|
||||
import { createGroup } from '../../src/services/groups'
|
||||
import * as util from '../../src/utils/sendEmail'
|
||||
import { MailDataRequired } from '@sendgrid/helpers/classes/mail'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/entity/utils'
|
||||
import { Filter } from "../../src/entity/filter"
|
||||
import { getRepository } from '../../src/entity'
|
||||
import {
|
||||
createTestUser,
|
||||
createUserWithoutProfile, deleteFiltersFromUser,
|
||||
deleteTestUser,
|
||||
getProfile,
|
||||
} from '../db'
|
||||
|
||||
chai.use(sinonChai)
|
||||
|
||||
@ -70,10 +68,10 @@ describe('create user', () => {
|
||||
const userFollowing = await getUserFollowing(user)
|
||||
const adminUserFollowers = await getUserFollowers(adminUser)
|
||||
const adminUserFollowing = await getUserFollowing(adminUser)
|
||||
expect(userFollowers.map(u => u.id)).to.eql(admninIds)
|
||||
expect(userFollowing.map(u => u.id)).to.eql(admninIds)
|
||||
expect(adminUserFollowers.map(u => u.id)).to.eql(userIds)
|
||||
expect(adminUserFollowing.map(u => u.id)).to.eql(userIds)
|
||||
expect(userFollowers.map((u) => u.id)).to.eql(admninIds)
|
||||
expect(userFollowing.map((u) => u.id)).to.eql(admninIds)
|
||||
expect(adminUserFollowers.map((u) => u.id)).to.eql(userIds)
|
||||
expect(adminUserFollowing.map((u) => u.id)).to.eql(userIds)
|
||||
})
|
||||
|
||||
it('creates profile when user exists but profile not', async () => {
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
import 'mocha'
|
||||
import { expect } from 'chai'
|
||||
import 'mocha'
|
||||
import { Label } from '../../src/entity/label'
|
||||
import { Link } from '../../src/entity/link'
|
||||
import { LinkLabel } from '../../src/entity/link_label'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { labelsLoader } from '../../src/services/labels'
|
||||
import {
|
||||
createTestLabel,
|
||||
createTestLink,
|
||||
@ -7,12 +13,6 @@ import {
|
||||
createTestUser,
|
||||
deleteTestUser,
|
||||
} from '../db'
|
||||
import { LinkLabel } from '../../src/entity/link_label'
|
||||
import { Label } from '../../src/entity/label'
|
||||
import { Link } from '../../src/entity/link'
|
||||
import { labelsLoader } from '../../src/services/labels'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { User } from '../../src/entity/user'
|
||||
|
||||
describe('batch get labels from linkIds', () => {
|
||||
let user: User
|
||||
|
||||
@ -3,11 +3,11 @@ import 'mocha'
|
||||
import nock from 'nock'
|
||||
import { createPubSubClient } from '../../src/datalayer/pubsub'
|
||||
import { getPageByParam } from '../../src/elastic/pages'
|
||||
import { getRepository } from '../../src/entity'
|
||||
import { NewsletterEmail } from '../../src/entity/newsletter_email'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
import { Subscription } from '../../src/entity/subscription'
|
||||
import { User } from '../../src/entity/user'
|
||||
import { getRepository } from '../../src/repository'
|
||||
import { createNewsletterEmail } from '../../src/services/newsletters'
|
||||
import { SaveContext } from '../../src/services/save_email'
|
||||
import { saveNewsletterEmail } from '../../src/services/save_newsletter_email'
|
||||
|
||||
Reference in New Issue
Block a user