Add local profile
This commit is contained in:
21
test/data/local/generated_migrations/schema.dart
Normal file
21
test/data/local/generated_migrations/schema.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
// GENERATED CODE, DO NOT EDIT BY HAND.
|
||||
// ignore_for_file: type=lint
|
||||
//@dart=2.12
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:drift/internal/migrations.dart';
|
||||
import 'schema_v1.dart' as v1;
|
||||
import 'schema_v2.dart' as v2;
|
||||
|
||||
class GeneratedHelper implements SchemaInstantiationHelper {
|
||||
@override
|
||||
GeneratedDatabase databaseForVersion(QueryExecutor db, int version) {
|
||||
switch (version) {
|
||||
case 1:
|
||||
return v1.DatabaseAtV1(db);
|
||||
case 2:
|
||||
return v2.DatabaseAtV2(db);
|
||||
default:
|
||||
throw MissingSchemaException(version, const {1, 2});
|
||||
}
|
||||
}
|
||||
}
|
||||
100
test/data/local/generated_migrations/schema_v1.dart
Normal file
100
test/data/local/generated_migrations/schema_v1.dart
Normal file
@@ -0,0 +1,100 @@
|
||||
// GENERATED CODE, DO NOT EDIT BY HAND.
|
||||
// ignore_for_file: type=lint
|
||||
//@dart=2.12
|
||||
import 'package:drift/drift.dart';
|
||||
|
||||
class ProfileEntries extends Table with TableInfo {
|
||||
@override
|
||||
final GeneratedDatabase attachedDatabase;
|
||||
final String? _alias;
|
||||
ProfileEntries(this.attachedDatabase, [this._alias]);
|
||||
late final GeneratedColumn<String> id = GeneratedColumn<String>(
|
||||
'id', aliasedName, false,
|
||||
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||
late final GeneratedColumn<bool> active = GeneratedColumn<bool>(
|
||||
'active', aliasedName, false,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: true,
|
||||
defaultConstraints:
|
||||
GeneratedColumn.constraintIsAlways('CHECK ("active" IN (0, 1))'));
|
||||
late final GeneratedColumn<String> name =
|
||||
GeneratedColumn<String>('name', aliasedName, false,
|
||||
additionalChecks: GeneratedColumn.checkTextLength(
|
||||
minTextLength: 1,
|
||||
),
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: true);
|
||||
late final GeneratedColumn<String> url = GeneratedColumn<String>(
|
||||
'url', aliasedName, false,
|
||||
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||
late final GeneratedColumn<DateTime> lastUpdate = GeneratedColumn<DateTime>(
|
||||
'last_update', aliasedName, false,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: true);
|
||||
late final GeneratedColumn<int> updateInterval = GeneratedColumn<int>(
|
||||
'update_interval', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<int> upload = GeneratedColumn<int>(
|
||||
'upload', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<int> download = GeneratedColumn<int>(
|
||||
'download', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<int> total = GeneratedColumn<int>(
|
||||
'total', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<DateTime> expire = GeneratedColumn<DateTime>(
|
||||
'expire', aliasedName, true,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<String> webPageUrl = GeneratedColumn<String>(
|
||||
'web_page_url', aliasedName, true,
|
||||
type: DriftSqlType.string, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<String> supportUrl = GeneratedColumn<String>(
|
||||
'support_url', aliasedName, true,
|
||||
type: DriftSqlType.string, requiredDuringInsert: false);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [
|
||||
id,
|
||||
active,
|
||||
name,
|
||||
url,
|
||||
lastUpdate,
|
||||
updateInterval,
|
||||
upload,
|
||||
download,
|
||||
total,
|
||||
expire,
|
||||
webPageUrl,
|
||||
supportUrl
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'profile_entries';
|
||||
@override
|
||||
Set<GeneratedColumn> get $primaryKey => {id};
|
||||
@override
|
||||
Never map(Map<String, dynamic> data, {String? tablePrefix}) {
|
||||
throw UnsupportedError('TableInfo.map in schema verification code');
|
||||
}
|
||||
|
||||
@override
|
||||
ProfileEntries createAlias(String alias) {
|
||||
return ProfileEntries(attachedDatabase, alias);
|
||||
}
|
||||
}
|
||||
|
||||
class DatabaseAtV1 extends GeneratedDatabase {
|
||||
DatabaseAtV1(QueryExecutor e) : super(e);
|
||||
late final ProfileEntries profileEntries = ProfileEntries(this);
|
||||
@override
|
||||
Iterable<TableInfo<Table, Object?>> get allTables =>
|
||||
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
|
||||
@override
|
||||
List<DatabaseSchemaEntity> get allSchemaEntities => [profileEntries];
|
||||
@override
|
||||
int get schemaVersion => 1;
|
||||
@override
|
||||
DriftDatabaseOptions get options =>
|
||||
const DriftDatabaseOptions(storeDateTimeAsText: true);
|
||||
}
|
||||
104
test/data/local/generated_migrations/schema_v2.dart
Normal file
104
test/data/local/generated_migrations/schema_v2.dart
Normal file
@@ -0,0 +1,104 @@
|
||||
// GENERATED CODE, DO NOT EDIT BY HAND.
|
||||
// ignore_for_file: type=lint
|
||||
//@dart=2.12
|
||||
import 'package:drift/drift.dart';
|
||||
|
||||
class ProfileEntries extends Table with TableInfo {
|
||||
@override
|
||||
final GeneratedDatabase attachedDatabase;
|
||||
final String? _alias;
|
||||
ProfileEntries(this.attachedDatabase, [this._alias]);
|
||||
late final GeneratedColumn<String> id = GeneratedColumn<String>(
|
||||
'id', aliasedName, false,
|
||||
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||
late final GeneratedColumn<String> type = GeneratedColumn<String>(
|
||||
'type', aliasedName, false,
|
||||
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||
late final GeneratedColumn<bool> active = GeneratedColumn<bool>(
|
||||
'active', aliasedName, false,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: true,
|
||||
defaultConstraints:
|
||||
GeneratedColumn.constraintIsAlways('CHECK ("active" IN (0, 1))'));
|
||||
late final GeneratedColumn<String> name =
|
||||
GeneratedColumn<String>('name', aliasedName, false,
|
||||
additionalChecks: GeneratedColumn.checkTextLength(
|
||||
minTextLength: 1,
|
||||
),
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: true);
|
||||
late final GeneratedColumn<String> url = GeneratedColumn<String>(
|
||||
'url', aliasedName, true,
|
||||
type: DriftSqlType.string, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<DateTime> lastUpdate = GeneratedColumn<DateTime>(
|
||||
'last_update', aliasedName, false,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: true);
|
||||
late final GeneratedColumn<int> updateInterval = GeneratedColumn<int>(
|
||||
'update_interval', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<int> upload = GeneratedColumn<int>(
|
||||
'upload', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<int> download = GeneratedColumn<int>(
|
||||
'download', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<int> total = GeneratedColumn<int>(
|
||||
'total', aliasedName, true,
|
||||
type: DriftSqlType.int, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<DateTime> expire = GeneratedColumn<DateTime>(
|
||||
'expire', aliasedName, true,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<String> webPageUrl = GeneratedColumn<String>(
|
||||
'web_page_url', aliasedName, true,
|
||||
type: DriftSqlType.string, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<String> supportUrl = GeneratedColumn<String>(
|
||||
'support_url', aliasedName, true,
|
||||
type: DriftSqlType.string, requiredDuringInsert: false);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [
|
||||
id,
|
||||
type,
|
||||
active,
|
||||
name,
|
||||
url,
|
||||
lastUpdate,
|
||||
updateInterval,
|
||||
upload,
|
||||
download,
|
||||
total,
|
||||
expire,
|
||||
webPageUrl,
|
||||
supportUrl
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'profile_entries';
|
||||
@override
|
||||
Set<GeneratedColumn> get $primaryKey => {id};
|
||||
@override
|
||||
Never map(Map<String, dynamic> data, {String? tablePrefix}) {
|
||||
throw UnsupportedError('TableInfo.map in schema verification code');
|
||||
}
|
||||
|
||||
@override
|
||||
ProfileEntries createAlias(String alias) {
|
||||
return ProfileEntries(attachedDatabase, alias);
|
||||
}
|
||||
}
|
||||
|
||||
class DatabaseAtV2 extends GeneratedDatabase {
|
||||
DatabaseAtV2(QueryExecutor e) : super(e);
|
||||
late final ProfileEntries profileEntries = ProfileEntries(this);
|
||||
@override
|
||||
Iterable<TableInfo<Table, Object?>> get allTables =>
|
||||
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
|
||||
@override
|
||||
List<DatabaseSchemaEntity> get allSchemaEntities => [profileEntries];
|
||||
@override
|
||||
int get schemaVersion => 2;
|
||||
@override
|
||||
DriftDatabaseOptions get options =>
|
||||
const DriftDatabaseOptions(storeDateTimeAsText: true);
|
||||
}
|
||||
20
test/data/local/migrations_test.dart
Normal file
20
test/data/local/migrations_test.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import 'package:drift_dev/api/migrations.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:hiddify/data/local/database.dart';
|
||||
|
||||
import 'generated_migrations/schema.dart';
|
||||
|
||||
void main() {
|
||||
late SchemaVerifier verifier;
|
||||
|
||||
setUpAll(() {
|
||||
verifier = SchemaVerifier(GeneratedHelper());
|
||||
});
|
||||
|
||||
test('upgrade from v1 to v2', () async {
|
||||
final connection = await verifier.startAt(1);
|
||||
final db = AppDatabase(connection: connection);
|
||||
|
||||
await verifier.migrateAndValidate(db, 2);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user