mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
* upgrade typeorm to 3.0 * use new datasource object in typeorm 3 * fix tests * fix tests * migrate before creating connection * fail the test if migration failed
79 lines
1.9 KiB
TypeScript
79 lines
1.9 KiB
TypeScript
import { UserDeviceToken } from '../entity/user_device_tokens'
|
|
import { User } from '../entity/user'
|
|
import { SetDeviceTokenErrorCode } from '../generated/graphql'
|
|
import { getRepository, setClaims } from '../entity/utils'
|
|
import { analytics } from '../utils/analytics'
|
|
import { env } from '../env'
|
|
import { AppDataSource } from '../server'
|
|
|
|
export const getDeviceToken = async (
|
|
id: string
|
|
): Promise<UserDeviceToken | null> => {
|
|
return getRepository(UserDeviceToken).findOneBy({ id })
|
|
}
|
|
|
|
export const getDeviceTokenByToken = async (
|
|
token: string
|
|
): Promise<UserDeviceToken | null> => {
|
|
return getRepository(UserDeviceToken).findOneBy({ token })
|
|
}
|
|
|
|
export const getDeviceTokensByUserId = async (
|
|
userId: string
|
|
): Promise<UserDeviceToken[] | undefined> => {
|
|
return getRepository(UserDeviceToken).find({
|
|
where: { user: { id: userId } },
|
|
})
|
|
}
|
|
|
|
export const createDeviceToken = async (
|
|
userId: string,
|
|
token: string
|
|
): Promise<UserDeviceToken> => {
|
|
const user = await getRepository(User).findOneBy({ id: userId })
|
|
if (!user) {
|
|
return Promise.reject({
|
|
errorCode: SetDeviceTokenErrorCode.Unauthorized,
|
|
})
|
|
}
|
|
|
|
analytics.track({
|
|
userId: userId,
|
|
event: 'device_token_created',
|
|
properties: {
|
|
env: env.server.apiEnv,
|
|
},
|
|
})
|
|
|
|
return getRepository(UserDeviceToken).save({
|
|
token: token,
|
|
user: user,
|
|
})
|
|
}
|
|
|
|
export const deleteDeviceToken = async (
|
|
id: string,
|
|
userId: string
|
|
): Promise<boolean> => {
|
|
const user = await getRepository(User).findOneBy({ id: userId })
|
|
if (!user) {
|
|
return Promise.reject({
|
|
errorCode: SetDeviceTokenErrorCode.Unauthorized,
|
|
})
|
|
}
|
|
|
|
analytics.track({
|
|
userId: userId,
|
|
event: 'device_token_deleted',
|
|
properties: {
|
|
env: env.server.apiEnv,
|
|
},
|
|
})
|
|
|
|
return AppDataSource.transaction(async (t) => {
|
|
await setClaims(t, userId)
|
|
const result = await t.getRepository(UserDeviceToken).delete(id)
|
|
|
|
return !!result.affected
|
|
})
|
|
}
|