File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { DatabaseService } from ".." ;
2+ import { GroupMembership } from "../../../entities/GroupMembership" ;
3+
4+ export class GroupMembershipService extends DatabaseService {
5+ private groupMembershipRepo = this . getRepo ( GroupMembership ) ;
6+
7+ async add ( membership : GroupMembership ) {
8+ return this . groupMembershipRepo . save ( membership ) ;
9+ }
10+
11+ async getById ( id : number ) {
12+ return this . groupMembershipRepo . findOne ( { where : { id } } ) ;
13+ }
14+
15+ async remove ( id : number ) {
16+ return this . groupMembershipRepo . delete ( { id } ) ;
17+ }
18+ async deleteUser ( userId :number ) {
19+ return this . groupMembershipRepo . delete ( { user : { id : userId } } ) ;
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ import { DatabaseService } from ".." ;
2+ import { GroupSettings } from "../../../entities/GroupSettings" ;
3+
4+ export class GroupSettingsService extends DatabaseService {
5+ private groupSettingsRepo = this . getRepo ( GroupSettings ) ;
6+
7+ async create ( settings : Partial < GroupSettings > ) : Promise < GroupSettings > {
8+ return this . groupSettingsRepo . create ( settings ) ;
9+ }
10+
11+ async getByGroupId ( groupId : number ) : Promise < GroupSettings | null > {
12+ return this . groupSettingsRepo . findOne ( { where : { group_id : groupId } } ) ;
13+ }
14+
15+ async save ( settings : GroupSettings ) {
16+ return this . groupSettingsRepo . save ( settings ) ;
17+ }
18+
19+ async remove ( id : number ) {
20+ return this . groupSettingsRepo . delete ( { id } ) ;
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ import { DataSource , ObjectLiteral , Repository } from "typeorm" ;
2+ import { AppDataSource } from "../../config/db" ;
3+ import { logger } from "../../config/logger" ;
4+ export class DatabaseService {
5+ protected db : DataSource ;
6+
7+ constructor ( ) {
8+ this . db = AppDataSource ;
9+ }
10+
11+ protected getRepo < T extends ObjectLiteral > ( entity : {
12+ new ( ) : T ;
13+ } ) : Repository < T > {
14+ return this . db . getRepository ( entity ) ;
15+ }
16+
17+ async initialize ( ) {
18+ try {
19+ await this . db . initialize ( ) ;
20+ logger . info ( "Database connection initialized" , "DATABASE" ) ;
21+ } catch ( error : any ) {
22+ logger . error ( "Error initializing database connection" , error , "DATABASE" ) ;
23+ }
24+ }
25+
26+ async close ( ) {
27+ await this . db . destroy ( ) ;
28+ logger . info ( "Database connection closed" ) ;
29+ }
30+ }
31+ export const db = new DatabaseService ( ) ;
Original file line number Diff line number Diff line change 1+ import { DatabaseService } from ".." ;
2+ import { ApprovedUser } from "../../../entities/ApprovedUser" ;
3+ import { GroupSettings } from "../../../entities/GroupSettings" ;
4+
5+ export class ApprovedUserService extends DatabaseService {
6+ private approvedUserRepo = this . getRepo ( ApprovedUser ) ;
7+ async create ( userData : Partial < ApprovedUser > ) : Promise < ApprovedUser > {
8+ return this . approvedUserRepo . create ( userData ) ;
9+ }
10+ async save ( user : ApprovedUser ) : Promise < ApprovedUser > {
11+ return this . approvedUserRepo . save ( user ) ;
12+ }
13+
14+ async getById ( id : number ) : Promise < ApprovedUser | null > {
15+ return this . approvedUserRepo . findOne ( { where : { id } } ) ;
16+ }
17+ async getByIdAndGroup ( userId : number , groupSettings :GroupSettings ) {
18+ return this . approvedUserRepo . findOne ( {
19+ where : { user_id : userId , group : groupSettings } ,
20+ } ) ;
21+ }
22+ async remove ( id : number ) : Promise < void > {
23+ await this . approvedUserRepo . delete ( { id } ) ;
24+ }
25+ }
Original file line number Diff line number Diff line change 1+ import { Context } from "grammy" ;
2+ import { DatabaseService } from ".." ;
3+ import { User } from "../../../entities/User" ;
4+
5+ export class UserService extends DatabaseService {
6+ private userRepo = this . getRepo ( User ) ;
7+
8+ async create ( userdata : Partial < User > ) : Promise < User > {
9+ return this . userRepo . create ( userdata ) ;
10+ }
11+
12+ async getByTelegramId ( telegramId : number ) {
13+ return this . userRepo . findOne ( { where : { telegram_id : telegramId } } ) ;
14+ }
15+ async save ( user : User ) {
16+ return this . userRepo . save ( user ) ;
17+ }
18+ async findByRelations ( userId : number , relationship : string ) {
19+ return this . userRepo . findOne ( {
20+ where : { telegram_id : userId } ,
21+ relations : [ relationship ] ,
22+ } ) ;
23+ }
24+ async removeUser ( id : number ) {
25+ return this . userRepo . delete ( { id } ) ;
26+ }
27+ async createUser ( ctx : Context , telegram_id : number ) {
28+ const chatMember = await ctx . getChatMember ( telegram_id ) ;
29+ const role = chatMember . status ;
30+ let user = await this . getByTelegramId ( telegram_id ) ;
31+
32+ if ( ! user ) {
33+ user = await this . userRepo . create ( {
34+ telegram_id,
35+ role,
36+ warnings : [ ] ,
37+ } ) ;
38+ await this . userRepo . save ( user ) ;
39+ }
40+
41+ return user ;
42+ }
43+ }
Original file line number Diff line number Diff line change 1+ import { DatabaseService } from ".." ;
2+ import { User } from "../../../entities/User" ;
3+ import { Warning } from "../../../entities/Warning" ;
4+
5+ export class WarningServiceDb extends DatabaseService {
6+ private warningRepo = this . getRepo ( Warning ) ;
7+ async create ( warning : Partial < Warning > ) : Promise < Warning > {
8+ return this . warningRepo . create ( warning ) ;
9+ }
10+ async save ( warning : Warning ) {
11+ return this . warningRepo . save ( warning ) ;
12+ }
13+
14+ async getByUserId ( userId : number ) {
15+ return this . warningRepo . find ( { where : { user : { id : userId } } } ) ;
16+ }
17+ async remove ( id : number ) {
18+ return this . warningRepo . delete ( { id } ) ;
19+ }
20+ async clear ( user : any ) {
21+ return this . warningRepo . delete ( { user } ) ;
22+ }
23+
24+ async count ( user : User ) {
25+ return await this . warningRepo . count ( { where : { user } } ) ;
26+ }
27+ }
You can’t perform that action at this time.
0 commit comments