Skip to content

Commit b988ee1

Browse files
committed
refactor(service/db): BotOverseer, GroupMembershipService, GroupSettingsService, DatabaseService, ApprovedUserService, UserService, and WarningServiceDb classes, modifying method signatures, adding new methods, and updating existing logic."
1 parent f8f520d commit b988ee1

7 files changed

Lines changed: 47 additions & 19 deletions

File tree

src/service/bot/index.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ export class BotOverseer {
8888
return user!;
8989
}
9090
@SafeExecution()
91-
async userInGroup(
92-
msg: string = "The user is no longer a member of this group."
93-
): Promise<boolean | undefined> {
91+
async userInGroup(msg: string = "The user is no longer a member of this group."): Promise<boolean | undefined> {
9492
const id = await this.getRepliedUserId();
9593
if (!id) {
9694
await this.ctx.reply(

src/service/db/group/Membership.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,26 @@ import { GroupMembership } from "../../../entities/GroupMembership";
44
export class GroupMembershipService extends DatabaseService {
55
private groupMembershipRepo = this.getRepo(GroupMembership);
66

7-
async add(membership: GroupMembership) {
8-
return this.groupMembershipRepo.save(membership);
7+
async create(membership: Partial<GroupMembership>): Promise<GroupMembership> {
8+
return this.groupMembershipRepo.create(membership);
99
}
1010

1111
async getById(id: number) {
1212
return this.groupMembershipRepo.findOne({ where: { id } });
1313
}
1414

15+
async getGroupAndUserId(groupId: number, userId: number) {
16+
return this.groupMembershipRepo.findOne({
17+
where: { group: { id: groupId }, user: { id: userId } },
18+
});
19+
}
20+
async save(membership: Partial<GroupMembership>): Promise<GroupMembership> {
21+
return this.groupMembershipRepo.save(membership);
22+
}
1523
async remove(id: number) {
1624
return this.groupMembershipRepo.delete({ id });
1725
}
18-
async deleteUser(userId:number){
26+
async deleteUser(userId: number) {
1927
return this.groupMembershipRepo.delete({ user: { id: userId } });
2028
}
2129
}

src/service/db/group/index.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Context } from "grammy";
12
import { DatabaseService } from "..";
23
import { GroupSettings } from "../../../entities/GroupSettings";
34

@@ -19,4 +20,20 @@ export class GroupSettingsService extends DatabaseService {
1920
async remove(id: number) {
2021
return this.groupSettingsRepo.delete({ id });
2122
}
23+
async init(ctx: Context) {
24+
const chat = ctx.chat!;
25+
const from = ctx.from;
26+
return await this.save(
27+
await this.create({
28+
group_id: chat.id,
29+
group_name: chat.title,
30+
welcome_message: "",
31+
chat_permissions: (await ctx.api.getChat(chat.id)).permissions,
32+
rules: "",
33+
description: "",
34+
black_list: [],
35+
added_by_id: from?.id,
36+
})
37+
);
38+
}
2239
}

src/service/db/index.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,8 @@ export class DatabaseService {
1515
}
1616

1717
async initialize() {
18-
try {
1918
await this.db.initialize();
2019
logger.info("Database connection initialized", "DATABASE");
21-
} catch (error: any) {
22-
logger.error("Error initializing database connection", error, "DATABASE");
23-
}
2420
}
2521

2622
async close() {

src/service/db/user/Approved.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ export class ApprovedUserService extends DatabaseService {
1414
async getById(id: number): Promise<ApprovedUser | null> {
1515
return this.approvedUserRepo.findOne({ where: { id } });
1616
}
17-
async getByIdAndGroup(userId: number,groupSettings:GroupSettings) {
17+
async getByIdAndGroup(userId: number, groupId: number) {
1818
return this.approvedUserRepo.findOne({
19-
where: { user_id: userId, group: groupSettings },
19+
where: { user_id: userId, group: { id: groupId } },
2020
});
2121
}
22+
async getByGroup(groupSettings: GroupSettings): Promise<ApprovedUser[]> {
23+
return this.approvedUserRepo.find({
24+
where: { group: { id: groupSettings.id } }, // Use the ID to filter
25+
relations: ["group"],
26+
});
27+
}
2228
async remove(id: number): Promise<void> {
23-
await this.approvedUserRepo.delete({ id });
29+
await this.approvedUserRepo.delete(id);
2430
}
2531
}

src/service/db/user/index.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,14 @@ export class UserService extends DatabaseService {
2828
const chatMember = await ctx.getChatMember(telegram_id);
2929
const role = chatMember.status;
3030
let user = await this.getByTelegramId(telegram_id);
31-
3231
if (!user) {
33-
user = await this.userRepo.create({
32+
user = this.userRepo.create({
3433
telegram_id,
3534
role,
3635
warnings: [],
3736
});
3837
await this.userRepo.save(user);
3938
}
40-
4139
return user;
4240
}
4341
}

src/service/db/user/warning.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,26 @@ import { Warning } from "../../../entities/Warning";
44

55
export class WarningServiceDb extends DatabaseService {
66
private warningRepo = this.getRepo(Warning);
7+
78
async create(warning: Partial<Warning>): Promise<Warning> {
8-
return this.warningRepo.create(warning);
9+
const newWarning = this.warningRepo.create(warning);
10+
return this.warningRepo.save(newWarning);
911
}
12+
1013
async save(warning: Warning) {
1114
return this.warningRepo.save(warning);
1215
}
1316

1417
async getByUserId(userId: number) {
1518
return this.warningRepo.find({ where: { user: { id: userId } } });
1619
}
20+
1721
async remove(id: number) {
1822
return this.warningRepo.delete({ id });
1923
}
20-
async clear(user: any) {
21-
return this.warningRepo.delete({ user });
24+
25+
async clear(userId: number) {
26+
return this.warningRepo.delete({ user: { id: userId } });
2227
}
2328

2429
async count(user: User) {

0 commit comments

Comments
 (0)