/* eslint-disable canonical/id-match */ import { getClientWithToken } from '../apollo/client'; import * as GQL from '../types'; export const ERRORS = { MISSING_TELEGRAM_ID: 'Не указан Telegram ID', NOT_FOUND_CUSTOMER: 'Пользователь не найден', }; type UserProfile = { telegramId: number; }; export class BaseService { protected _user: UserProfile; constructor(user: UserProfile) { if (!user?.telegramId) { throw new Error(ERRORS.MISSING_TELEGRAM_ID); } this._user = user; } protected async _getUser() { const { query } = await getClientWithToken(); const result = await query({ query: GQL.GetCustomerDocument, variables: this._user, }); const customer = result.data.customers.at(0); if (!customer) throw new Error(ERRORS.NOT_FOUND_CUSTOMER); return { customer }; } }