Skip to content
This repository was archived by the owner on Jan 28, 2026. It is now read-only.

Commit 736d9d8

Browse files
committed
refactor: Simplify result handling in QuestRepository methods to ensure consistent data extraction from database operations
1 parent 7cdea2d commit 736d9d8

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

src/quest/quest.repository.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -452,11 +452,12 @@ export class QuestRepository {
452452
}> | null;
453453
}): Promise<typeof quests.$inferSelect> {
454454
try {
455-
const [quest] = await this.db
455+
const result = await this.db
456456
.insert(quests)
457457
.values(data)
458458
.returning();
459459

460+
const quest = Array.isArray(result) ? result[0] : result;
460461
if (!quest) {
461462
throw new Error('Не удалось создать квест');
462463
}
@@ -488,7 +489,7 @@ export class QuestRepository {
488489
data: Partial<typeof quests.$inferInsert>,
489490
): Promise<typeof quests.$inferSelect | undefined> {
490491
try {
491-
const [quest] = await this.db
492+
const result = await this.db
492493
.update(quests)
493494
.set({ ...data, updatedAt: new Date() })
494495
.where(and(
@@ -497,6 +498,7 @@ export class QuestRepository {
497498
))
498499
.returning();
499500

501+
const quest = Array.isArray(result) ? result[0] : result;
500502
return quest;
501503
} catch (error: any) {
502504
this.logger.error(`Ошибка в update для квеста ID ${id}:`, error);
@@ -527,7 +529,7 @@ export class QuestRepository {
527529
*/
528530
async softDelete(id: number): Promise<typeof quests.$inferSelect | undefined> {
529531
try {
530-
const [quest] = await this.db
532+
const result = await this.db
531533
.update(quests)
532534
.set({ recordStatus: 'DELETED', updatedAt: new Date() })
533535
.where(and(
@@ -536,6 +538,7 @@ export class QuestRepository {
536538
))
537539
.returning();
538540

541+
const quest = Array.isArray(result) ? result[0] : result;
539542
return quest;
540543
} catch (error: any) {
541544
this.logger.error(`Ошибка в softDelete для квеста ID ${id}:`, error);
@@ -650,7 +653,7 @@ export class QuestRepository {
650653
*/
651654
async createUserQuest(userId: number, questId: number, status: 'in_progress' | 'completed' | 'failed' = 'in_progress'): Promise<typeof userQuests.$inferSelect> {
652655
try {
653-
const [userQuest] = await this.db
656+
const result = await this.db
654657
.insert(userQuests)
655658
.values({
656659
userId,
@@ -659,6 +662,7 @@ export class QuestRepository {
659662
})
660663
.returning();
661664

665+
const userQuest = Array.isArray(result) ? result[0] : result;
662666
if (!userQuest) {
663667
throw new Error('Не удалось создать связь пользователь-квест');
664668
}
@@ -678,12 +682,13 @@ export class QuestRepository {
678682
data: Partial<typeof userQuests.$inferInsert>,
679683
): Promise<typeof userQuests.$inferSelect | undefined> {
680684
try {
681-
const [userQuest] = await this.db
685+
const result = await this.db
682686
.update(userQuests)
683687
.set(data)
684688
.where(eq(userQuests.id, userQuestId))
685689
.returning();
686690

691+
const userQuest = Array.isArray(result) ? result[0] : result;
687692
return userQuest;
688693
} catch (error: any) {
689694
this.logger.error(`Ошибка в updateUserQuest для связи ID ${userQuestId}:`, error);
@@ -696,11 +701,12 @@ export class QuestRepository {
696701
*/
697702
async deleteUserQuest(userQuestId: number): Promise<typeof userQuests.$inferSelect | undefined> {
698703
try {
699-
const [userQuest] = await this.db
704+
const result = await this.db
700705
.delete(userQuests)
701706
.where(eq(userQuests.id, userQuestId))
702707
.returning();
703708

709+
const userQuest = Array.isArray(result) ? result[0] : result;
704710
return userQuest;
705711
} catch (error: any) {
706712
this.logger.error(`Ошибка в deleteUserQuest для связи ID ${userQuestId}:`, error);

0 commit comments

Comments
 (0)