This commit is contained in:
chen08209
2026-02-04 15:52:44 +08:00
parent 23b349c3df
commit fa28b0d610
4 changed files with 104 additions and 28 deletions

View File

@@ -0,0 +1,43 @@
part of 'database.dart';
class StringMapConverter extends TypeConverter<Map<String, String>, String> {
const StringMapConverter();
@override
Map<String, String> fromSql(String fromDb) {
return Map<String, String>.from(json.decode(fromDb));
}
@override
String toSql(Map<String, String> value) {
return json.encode(value);
}
}
class StringListConverter extends TypeConverter<List<String>, String> {
const StringListConverter();
@override
List<String> fromSql(String fromDb) {
return List<String>.from(json.decode(fromDb));
}
@override
String toSql(List<String> value) {
return json.encode(value.toList());
}
}
class StringSetConverter extends TypeConverter<Set<String>, String> {
const StringSetConverter();
@override
Set<String> fromSql(String fromDb) {
return Set<String>.from(json.decode(fromDb));
}
@override
String toSql(Set<String> value) {
return json.encode(value.toList());
}
}

View File

@@ -8,7 +8,9 @@ import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/models.dart';
part 'converter.dart';
part 'generated/database.g.dart';
part 'groups.dart';
part 'links.dart';
part 'profiles.dart';
part 'rules.dart';

59
lib/database/groups.dart Normal file
View File

@@ -0,0 +1,59 @@
part of 'database.dart';
@DataClassName('RawGroup')
class Groups extends Table {
@override
String get tableName => 'groups';
IntColumn get profileId => integer().nullable().references(
Profiles,
#id,
onDelete: KeyAction.cascade,
)();
TextColumn get name => text().named('name')();
TextColumn get type => text().named('type')();
TextColumn get proxies =>
text().map(const StringListConverter()).nullable().named('proxies')();
TextColumn get use =>
text().map(const StringListConverter()).nullable().named('use')();
TextColumn get url => text().nullable().named('url')();
IntColumn get interval => integer().nullable().named('interval')();
IntColumn get testTimeout => integer().nullable().named('timeout')();
IntColumn get maxFailedTimes =>
integer().nullable().named('max_failed_times')();
BoolColumn get lazy => boolean().nullable().named('lazy')();
BoolColumn get disableUdp => boolean().nullable().named('disable_udp')();
TextColumn get filter => text().nullable().named('filter')();
TextColumn get excludeFilter => text().nullable().named('exclude_filter')();
TextColumn get excludeType => text().nullable().named('exclude_type')();
TextColumn get expectedStatus => text().nullable().named('expected_status')();
BoolColumn get includeAll => boolean().nullable().named('include_all')();
BoolColumn get includeAllProxies =>
boolean().nullable().named('include_all_proxies')();
BoolColumn get includeAllProviders =>
boolean().nullable().named('include_all_providers')();
BoolColumn get hidden => boolean().nullable().named('hidden')();
TextColumn get icon => text().nullable().named('icon')();
@override
Set<Column> get primaryKey => {profileId, name};
}

View File

@@ -99,34 +99,6 @@ class ProfilesDao extends DatabaseAccessor<Database> with _$ProfilesDaoMixin {
}
}
class StringMapConverter extends TypeConverter<Map<String, String>, String> {
const StringMapConverter();
@override
Map<String, String> fromSql(String fromDb) {
return Map<String, String>.from(json.decode(fromDb));
}
@override
String toSql(Map<String, String> value) {
return json.encode(value);
}
}
class StringSetConverter extends TypeConverter<Set<String>, String> {
const StringSetConverter();
@override
Set<String> fromSql(String fromDb) {
return Set<String>.from(json.decode(fromDb));
}
@override
String toSql(Set<String> value) {
return json.encode(value.toList());
}
}
extension RawProfilExt on RawProfile {
Profile toProfile() {
return Profile(