|
1 | 1 | import { ChatPermissions } from 'grammy/types'; |
2 | 2 |
|
3 | 3 | export interface Group { |
4 | | - id: number; // Primary Key |
| 4 | + id: number; |
5 | 5 | group_id: number; |
6 | 6 | group_name: string; |
7 | | - rules: string[]; // Array of rules |
8 | | - black_list: string[]; // Array of blacklisted words or user IDs |
9 | | - chat_permissions: ChatPermissions; // Permissions for the group |
10 | | - approved_users: number[]; // Array of user IDs of approved users |
11 | | - warnings: number; // Number of warnings for the group |
12 | | - is_spam_time: boolean; // Whether the group is flagged for spam |
| 7 | + black_list: string[]; |
| 8 | + chat_permissions: ChatPermissions; |
| 9 | + approved_users: number[]; |
| 10 | + warnings: number; |
| 11 | + is_spam_time: boolean; |
13 | 12 | members: number[]; |
| 13 | + updated_at: Date; |
| 14 | + joined_at: Date; |
14 | 15 | } |
15 | 16 | export interface User { |
16 | | - id: number; // Primary Key |
17 | | - telegram_id: number; // Telegram user ID |
18 | | - username: string | null; // Telegram username |
| 17 | + id: number; |
| 18 | + telegram_id: number; |
| 19 | + username: string | null; |
19 | 20 | first_name: string; |
20 | | - role: 'admin' | 'moderator' | 'user'; // Role of the user |
21 | | - warnings: number; // Number of warnings the user has received |
22 | | - approved_groups: number[]; // List of approved group IDs for the user |
| 21 | + created_at: Date; |
| 22 | + updated_at: Date; |
| 23 | + role: 'admin' | 'moderator' | 'user' | 'approved_user'; |
| 24 | + warnings: number; |
| 25 | + approved_groups: number[]; |
23 | 26 | } |
24 | 27 | export interface Warning { |
25 | | - id: number; // Primary Key |
26 | | - user_id: User['id']; // Foreign Key to User table |
27 | | - group_id: Group['id']; // Foreign Key to Group table |
28 | | - warned_at: string; // Date/Time when the warning was issued |
29 | | - reason: string; // Reason for the warning |
| 28 | + id: number; |
| 29 | + user_id: User['id']; |
| 30 | + group_id: Group['id']; |
| 31 | + reason: string; |
| 32 | + warned_at: Date; |
30 | 33 | } |
31 | 34 | export interface ApprovedUser { |
32 | | - id: number; // Primary Key |
33 | | - user_id: User['id']; // Foreign Key to User table |
34 | | - group_id: Group['id']; // Foreign Key to Group table |
35 | | - username: string; // Username of the approved user |
| 35 | + id: number; |
| 36 | + user_id: User['id']; |
| 37 | + group_id: Group['id']; |
| 38 | + username: string; |
36 | 39 | } |
37 | 40 | export interface Channel { |
38 | | - id: number; // Primary Key |
39 | | - name: string; // Name of the channel |
40 | | - channel_id: number; // Unique identifier for the channel |
41 | | - admins: number[]; // List of admin user IDs |
42 | | -} |
43 | | -export interface GroupAdminPermissions { |
44 | | - id: number; // Primary Key |
45 | | - group_id: Group['id']; // Foreign Key to Group table |
46 | | - user_id: User['id']; // Foreign Key to User table |
47 | | - can_manage_approvals: boolean; |
48 | | - can_manage_users: boolean; |
49 | | - can_manage_blacklist: boolean; |
50 | | - can_manage_rules: boolean; |
51 | | - can_manage_pinning: boolean; |
52 | | - can_manage_messages: boolean; |
53 | | - can_manage_group_settings: boolean; |
54 | | - can_view_group_stats: boolean; |
55 | | - can_broadcast_message: boolean; |
56 | | - can_view_admin_list: boolean; |
57 | | -} |
58 | | -export interface Blacklist { |
59 | | - id: number; // Primary Key |
60 | | - group_id: Group['id']; // Foreign Key to Group table |
61 | | - blacklisted_word?: string; // Optional: blacklisted word |
62 | | - blacklisted_user_id?: User['id']; // Optional: blacklisted user ID |
| 41 | + id: number; |
| 42 | + name: string; |
| 43 | + channel_id: number; |
| 44 | + admins: number[]; |
63 | 45 | } |
64 | 46 | export interface GroupRule { |
65 | | - id: number; // Primary Key |
66 | | - group_id: Group['id']; // Foreign Key to Group table |
67 | | - rule_text: string; // The rule text |
68 | | - added_by: User['id']; // User ID of the admin who added the rule |
| 47 | + id: number; |
| 48 | + group_id: Group['id']; |
| 49 | + rule_text: string[]; |
| 50 | + added_by: User['id']; |
| 51 | + added_at: Date; |
69 | 52 | } |
70 | 53 | export interface GroupMessageSettings { |
71 | | - id: number; // Primary Key |
72 | | - group_id: Group['id']; // Foreign Key to Group table |
73 | | - is_locked: boolean; // Whether the group is locked |
74 | | - welcome_message: string; // Welcome message for new users |
| 54 | + id: number; |
| 55 | + group_id: Group['id']; |
| 56 | + is_locked: boolean; |
| 57 | + welcome_message: string; |
75 | 58 | } |
0 commit comments