diff --git a/src/controllers/token/index.ts b/src/controllers/token/index.ts index fd6abd7..b8c6148 100644 --- a/src/controllers/token/index.ts +++ b/src/controllers/token/index.ts @@ -3,6 +3,7 @@ import { env } from "hono/adapter"; import mapKeys from "lodash.mapkeys"; import { Case, changeStringCase } from "~/libs/changeStringCase"; +import { TokenAlreadyExistsError } from "~/libs/errors/TokenAlreadyExists"; import type { AdminSdkCredentials } from "~/libs/fcm/getGoogleAuthToken"; import { verifyFcmToken } from "~/libs/fcm/verifyFcmToken"; import { readEnvVariable } from "~/libs/readEnvVariable"; @@ -69,7 +70,7 @@ app.openapi(route, async (c) => { await saveToken(env(c, "workerd"), deviceId, token, username); } catch (error) { - if (error.message === "Token already exists in the database") { + if (error instanceof TokenAlreadyExistsError) { return c.json(ErrorResponse, 412); } diff --git a/src/libs/errors/TokenAlreadyExists.ts b/src/libs/errors/TokenAlreadyExists.ts new file mode 100644 index 0000000..abdaa41 --- /dev/null +++ b/src/libs/errors/TokenAlreadyExists.ts @@ -0,0 +1,5 @@ +export class TokenAlreadyExistsError extends Error { + constructor() { + super("Token already exists in the database"); + } +} diff --git a/src/models/token.ts b/src/models/token.ts index ecd042b..cb8eaa3 100644 --- a/src/models/token.ts +++ b/src/models/token.ts @@ -1,5 +1,6 @@ import { eq, or, sql } from "drizzle-orm"; +import { TokenAlreadyExistsError } from "~/libs/errors/TokenAlreadyExists"; import type { Env } from "~/types/env"; import { getDb } from "./db"; @@ -34,7 +35,7 @@ export function saveToken( !existingToken.username && !username ) { - throw new Error("Token already exists in the database"); + throw new TokenAlreadyExistsError(); } return updateToken(env, deviceId, token, username);