53 lines
1.5 KiB
Dart
53 lines
1.5 KiB
Dart
|
|
import 'dart:io';
|
||
|
|
|
||
|
|
import 'package:isar/isar.dart';
|
||
|
|
import 'package:mnemo_cards_backend/cron/task.dart';
|
||
|
|
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 {
|
||
|
|
final lines = File('admins').readAsLinesSync();
|
||
|
|
List<int> adminIds = [];
|
||
|
|
for (final line in lines) {
|
||
|
|
final token = line.trim();
|
||
|
|
print('$name lines: ${lines.length}');
|
||
|
|
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;
|
||
|
|
}
|