diff --git a/src/modules/standard/database/README.md b/src/modules/standard/database/README.md new file mode 100644 index 0000000..9f0b979 --- /dev/null +++ b/src/modules/standard/database/README.md @@ -0,0 +1,48 @@ +## Модуль DataBase + +Модуль DataBase предназначен для ведения и работы с базами данных OCAB. + +Модуль содержит в себе следующие таблицы: + +* `Chats` - таблица для хранения информации о чатах. +* `Users` - таблица для хранения информации о пользователях. +* `Messages` - таблица для хранения информации о сообщениях. +* `ChatStats` - таблица для хранения статистики чатов по дням. +* `UserStats` - таблица для хранения статистики пользователей по дням. + +Cтруктура таблицы `Chats`: +* `chat_id` - идентификатор чата. +* `chat_name` - название чата. +* `chat_type` - тип чата. (0 - Чат администраторов, 1 - Пользовательский чат, 3 - Чат разрешённых личных запросов к боту +10 - Не инициализированный чат) +* `chat_stats` - количество всех отправленных сообщений в чате. + +Cтруктура таблицы `Users`: +* `user_id` - идентификатор пользователя telegram. +* `user_tag` - тег пользователя telegram. +* `user_name` - имя пользователя telegram. +* `user_role` - роль пользователя в чате. (0 - Администратор, 1 - Модератор, 2 - Пользователь) +* `user_stats` - количество всех отправленных сообщений пользователем. +* `user_rep` - репутация пользователя. + +Cтруктура таблицы `Messages`: +* `message_chat_id` - идентификатор чата в котором отправлено сообщение. +* `message_id` - идентификатор сообщения. +* `messag_sender_id` - идентификатор пользователя отправившего сообщение. Если сообщение отправил бот, то +`messag_sender_id` = 0. +* `answer_to_message_id` - идентификатор сообщения на которое дан ответ. Если ответа нет или ответ на служебное +сообщение о создании топика в чатах с форумным типом, то `answer_to_message_id` = 0. +* `message_ai_model` - идентификатор модели нейросети, которая использовалась для генерации ответа. Если ответ' +сгенерирован не был, то `message_ai_model` = null. +* `message_text` - текст сообщения. + +Cтруктура таблицы `ChatStats`: +* `chat_id` - идентификатор чата для которого собрана статистика. +* `date` - дата на которую собрана статистика. +* `messages_count` - количество сообщений отправленных в чат за день. + +Cтруктура таблицы `UserStats`: +* `chat_id` - идентификатор чата для которого собрана статистика. +* `user_id` - идентификатор пользователя для которого собрана статистика. +* `date` - дата на которую собрана статистика. +* `messages_count` - количество сообщений отправленных пользователем в чат за день. \ No newline at end of file diff --git a/src/modules/standard/database/info.json b/src/modules/standard/database/info.json index db9c2c7..f9a7e75 100644 --- a/src/modules/standard/database/info.json +++ b/src/modules/standard/database/info.json @@ -2,5 +2,5 @@ "name": "Database", "description": "Модуль для работы с БД", "author": "OCAB Team", - "version": "1.0" + "version": "0.1" } \ No newline at end of file diff --git a/src/modules/standard/database/models/chat_stats.py b/src/modules/standard/database/models/chat_stats.py new file mode 100644 index 0000000..97bb28e --- /dev/null +++ b/src/modules/standard/database/models/chat_stats.py @@ -0,0 +1,9 @@ +import peewee as pw + + +class ChatStats(pw.Model): + class Meta: + ... + chat_id = pw.IntegerField(null=False) + date = pw.DateField(null=False) + messages_count = pw.IntegerField(null=False, default=0) diff --git a/src/modules/standard/database/models/chats.py b/src/modules/standard/database/models/chats.py index 00f783c..d354be7 100644 --- a/src/modules/standard/database/models/chats.py +++ b/src/modules/standard/database/models/chats.py @@ -4,6 +4,7 @@ import peewee as pw class Chats(pw.Model): class Meta: ... - chat_role = pw.IntegerField(null=False, default=1) - chat_stats = pw.IntegerField(null=False) - chat_federation = pw.IntegerField(null=False) + chat_id = pw.IntegerField(null=False) + chat_name = pw.CharField(null=False) + chat_type = pw.IntegerField(null=False, default=10) + chat_all_stat = pw.IntegerField(null=False) diff --git a/src/modules/standard/database/models/messages.py b/src/modules/standard/database/models/messages.py index 1f22f3d..81a70e2 100644 --- a/src/modules/standard/database/models/messages.py +++ b/src/modules/standard/database/models/messages.py @@ -4,6 +4,10 @@ import peewee as pw class Messages(pw.Model): class Meta: ... + message_chat_id = pw.IntegerField(null=False) + message_id = pw.IntegerField(null=False) + message_sender_id = pw.IntegerField(null=False) + answer_to_message_id = pw.IntegerField(null=True) + message_ai_model = pw.TextField(null=True) message_text = pw.TextField(null=False) - message_id_sender = pw.IntegerField(null=False) - answer_to_id = pw.IntegerField(null=True) + diff --git a/src/modules/standard/database/models/user_stats.py b/src/modules/standard/database/models/user_stats.py new file mode 100644 index 0000000..6db2c1c --- /dev/null +++ b/src/modules/standard/database/models/user_stats.py @@ -0,0 +1,10 @@ +import peewee as pw + + +class UserStats(pw.Model): + class Meta: + ... + chat_id = pw.IntegerField(null=False) + user_id = pw.IntegerField(null=False) + date = pw.DateField(null=False) + messages_count = pw.IntegerField(null=False, default=0) diff --git a/src/modules/standard/database/models/users.py b/src/modules/standard/database/models/users.py index eac3f31..43f0747 100644 --- a/src/modules/standard/database/models/users.py +++ b/src/modules/standard/database/models/users.py @@ -4,8 +4,9 @@ import peewee as pw class Users(pw.Model): class Meta: ... - user_name = pw.CharField(null=False) # до 255 символов + user_id = pw.IntegerField(null=False) user_tag = pw.CharField(null=True) - user_role = pw.IntegerField(null=True) - user_stats = pw.IntegerField(null=True) - user_rep = pw.IntegerField(null=True) + user_name = pw.CharField(null=False) # до 255 символов + user_role = pw.IntegerField(null=True, default=3) + user_stats = pw.IntegerField(null=True, default=0) + user_rep = pw.IntegerField(null=True, default=0)