Skip to content

Commit 4104317

Browse files
committed
fix: changed mysql version to lts, also added a few queries
1 parent 5afa9e3 commit 4104317

File tree

2 files changed

+66
-4
lines changed

2 files changed

+66
-4
lines changed

marzban/fa/examples/mysql-queries.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,36 @@ ORDER BY total_used_traffic DESC;
171171
جای عدد `100` عدد نود آیدی را از تیبل `nodes` پیدا کرده و جایگزین کنید.
172172
:::
173173

174+
- مجموع حجم‌های تعیین شده توسط ادمین‌ها بر حسب ترابایت
175+
```sql
176+
SELECT admins.username, SUM(users.data_limit) / 1099511627776 AS total_data_limit_tb
177+
FROM users
178+
LEFT JOIN admins ON users.admin_id = admins.id
179+
GROUP BY admins.username;
180+
```
181+
182+
- مجموع حجم‌های تعیین شده توسط ادمین‌ها بر حسب گیگابایت
183+
```sql
184+
SELECT admins.username, SUM(users.data_limit) / 1073741824 AS total_data_limit_gb
185+
FROM users
186+
LEFT JOIN admins ON users.admin_id = admins.id
187+
GROUP BY admins.username;
188+
```
189+
190+
- کاربرهایی که محدودیت زمان ندارند
191+
```sql
192+
SELECT id, username
193+
FROM users
194+
WHERE expire IS NULL;
195+
```
196+
197+
- کاربرهایی که محدودیت حجم ندارند
198+
```sql
199+
SELECT id, username
200+
FROM users
201+
WHERE data_limit IS NULL;
202+
```
203+
174204
## اسکریپت های کاربردی SQL
175205
اسکریپت های `SQL` بر خلاف کوئری ها به جای خروجی دادن به شما در دیتابیس تغییر ایجاد می‌کنند.
176206

@@ -180,6 +210,10 @@ UPDATE users SET users.admin_id = 3
180210
WHERE users.admin_id = 6;
181211
```
182212

213+
::: tip نکته
214+
در نمونه بالا کاربران ادمینی که آیدی او در تیبل دیتابیس 6 هست به ادمینی که آیدی او 3 هست منتقل شده است.
215+
:::
216+
183217
- غیر فعال کردن تمام کاربران یک ادمین خاص
184218
```sql
185219
UPDATE users SET users.status= 'disabled'
@@ -488,6 +522,34 @@ END //
488522
DELIMITER ;
489523
```
490524

525+
```sql
526+
DELIMITER //
527+
528+
CREATE TRIGGER Limit_Admin_TotalData_Update
529+
BEFORE UPDATE ON users
530+
FOR EACH ROW
531+
BEGIN
532+
    DECLARE total_data_limit BIGINT;
533+
534+
    -- Calculate the total data limit of all users created by the admin
535+
    SELECT SUM(data_limit) INTO total_data_limit
536+
    FROM users
537+
    WHERE admin_id = 1;
538+
539+
    -- Check if the total data limit exceeds or equals 1 TB
540+
    IF total_data_limit >= (1 * 1024 * 1024 * 1024 * 1024) THEN
541+
        SIGNAL SQLSTATE '45000'
542+
        SET MESSAGE_TEXT = 'Admin has reached the total data limit.';
543+
    END IF;
544+
END //
545+
546+
DELIMITER ;
547+
```
548+
549+
::: tip نکته
550+
تریگر اول برای ایجاد محدودیت هنگام ساخت کاربر و تریگر دوم برای ایجاد محدودیت هنگام ویرایش هست، در نتیجه اگر قصد دارید برای ادمین محدودیت حجم بگذارید، لازم است هر دو تریگر را متناسب با میزان محدودیت دلخواه وارد کنید.
551+
:::
552+
491553
::: tip نکته
492554
این تریگر حجم معین شده را برای ادمین موردنظر محدود می‌کند نه حجم مصرفی، به این معنا که جمع کل حجم تعیین شده برای کاربرهای ادمین باید کمتر یا مساوی با لیمیت تعیین شده توسط شما باشد. حجم پیش فرض در تریگر 1 ترابایت تعیین شده که با تغییر عدد 1 می‌توانید آن را تغییر دهید.
493555
:::

marzban/fa/examples/mysql.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ services:
5252
- mysql
5353
5454
mysql:
55-
image: mysql:latest
55+
image: mysql:lts
5656
restart: always
5757
env_file: .env
5858
network_mode: host
@@ -81,7 +81,7 @@ services:
8181
- mysql
8282
8383
mysql:
84-
image: mysql:latest
84+
image: mysql:lts
8585
restart: always
8686
env_file: .env
8787
network_mode: host
@@ -245,7 +245,7 @@ services:
245245
- mysql
246246
247247
mysql:
248-
image: mysql:latest
248+
image: mysql:lts
249249
restart: always
250250
env_file: .env
251251
network_mode: host
@@ -326,7 +326,7 @@ services:
326326
- mysql
327327
328328
mysql:
329-
image: mysql:latest
329+
image: mysql:lts
330330
restart: always
331331
env_file: .env
332332
network_mode: host

0 commit comments

Comments
 (0)