mnemo_cards/mnemo_cards_backend/lib/cron/check_admins.dart

56 lines
1.7 KiB
Dart
Raw Normal View History

2025-11-16 11:25:27 +00:00
import 'package:isar/isar.dart';
import 'package:mnemo_cards_backend/cron/task.dart';
2025-12-11 17:49:15 +00:00
import 'package:mnemo_cards_backend/user/admin_ids_service.dart';
2025-11-16 11:25:27 +00:00
import 'package:mnemo_cards_common_backend/mnemo_cards_common_backend.dart';
import '../main.dart';
class CheckAdminsTask with Task {
@override
String get name => 'check_admins';
@override
Future<void> task() async {
2025-12-11 17:49:15 +00:00
// Получаем список ID админов из переменной окружения или файла
final adminIdsList = await AdminIdsService.getAdminIds();
if (adminIdsList.isEmpty) {
2025-12-11 00:51:18 +00:00
return;
}
2025-12-11 17:49:15 +00:00
2025-11-16 11:25:27 +00:00
List<int> adminIds = [];
2025-12-11 17:49:15 +00:00
for (final token in adminIdsList) {
print('$name processing admin ID: $token');
2025-11-16 11:25:27 +00:00
if (token.isNotEmpty) {
await isar.writeTxn(() async {
final tokenModel = await isar.tokenModels
.filter()
.externalUserIdEqualTo(token)
.findFirst();
if (tokenModel == null) {
return;
}
final user = await isar.userModels.get(tokenModel.userId);
if (user != null) {
adminIds.add(user.id!);
if (!user.admin) {
await isar.userModels.put(user.copyWith.admin(true));
}
}
});
}
}
// isar.writeTxn(() async {
// final admins =
// await isar.userModels.filter().adminEqualTo(true).findAll();
// final notAdmins = admins
// .where((u) => !adminIds.contains(u.id))
// .map((u) => u.copyWith.admin(false))
// .toList();
// await isar.userModels.putAll(notAdmins);
// });
}
@override
int get intervalSeconds => 300;
}