Fix compilation errors in CLI

This commit is contained in:
Simon Binder 2022-11-09 21:59:45 +01:00
parent 3b12faaa46
commit 360ee348a2
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
7 changed files with 52 additions and 45 deletions

View File

@ -265,3 +265,9 @@ class LimitingTextLength extends DriftColumnConstraint {
typedOther.maxLength == maxLength;
}
}
class DefaultConstraintsFromSchemaFile extends DriftColumnConstraint {
final String constraints;
DefaultConstraintsFromSchemaFile(this.constraints);
}

View File

@ -8,8 +8,8 @@ import 'package:logging/logging.dart';
import '../backends/analyzer_context_backend.dart';
import 'commands/analyze.dart';
import 'commands/identify_databases.dart';
//import 'commands/migrate.dart';
//import 'commands/schema.dart';
import 'commands/migrate.dart';
import 'commands/schema.dart';
import 'logging.dart';
Future run(List<String> args) async {
@ -35,9 +35,9 @@ class MoorCli {
usageLineLength: 80,
)
..addCommand(AnalyzeCommand(this))
..addCommand(IdentifyDatabases(this));
// ..addCommand(SchemaCommand(this))
// ..addCommand(MigrateCommand(this));
..addCommand(IdentifyDatabases(this))
..addCommand(SchemaCommand(this))
..addCommand(MigrateCommand(this));
_runner.argParser
.addFlag('verbose', abbr: 'v', defaultsTo: false, negatable: false);

View File

@ -1,6 +1,7 @@
import 'package:args/command_runner.dart';
import 'package:drift_dev/src/cli/commands/schema/dump.dart';
import 'package:drift_dev/src/cli/commands/schema/generate_utils.dart';
import 'schema/dump.dart';
import 'schema/generate_utils.dart';
import '../cli.dart';

View File

@ -2,10 +2,10 @@ import 'dart:convert';
import 'dart:io';
import 'package:args/command_runner.dart';
import 'package:drift_dev/src/analyzer/runner/results.dart';
import 'package:drift_dev/src/services/schema/schema_files.dart';
import 'package:path/path.dart';
import '../../../analysis/results/results.dart';
import '../../../services/schema/schema_files.dart';
import '../../cli.dart';
class DumpSchemaCommand extends Command {
@ -45,10 +45,19 @@ class DumpSchemaCommand extends Command {
cli.exit('Unexpected error: The input file could not be analyzed');
}
final result = input.fileAnalysis;
final databases =
input.analysis.values.map((e) => e.result).whereType<DriftDatabase>();
final db = result.declaredDatabases.single;
final writer = SchemaWriter(db, options: cli.project.moorOptions);
if (databases.length != 1) {
cli.exit('Expected the input file to contain exactly one database.');
}
final result = input.fileAnalysis!;
final databaseElement = databases.single;
final db = result.resolvedDatabases[databaseElement]!;
final writer =
SchemaWriter(db.availableElements, options: cli.project.moorOptions);
var target = rest[1];
// This command is most commonly used to write into
@ -56,7 +65,7 @@ class DumpSchemaCommand extends Command {
// try to infer the file name.
if (await FileSystemEntity.isDirectory(target) ||
!target.endsWith('.json')) {
final version = db.schemaVersion;
final version = databaseElement.schemaVersion;
if (version == null) {
// Couldn't read schema from database, so fail.

View File

@ -3,13 +3,16 @@ import 'dart:io';
import 'package:args/command_runner.dart';
import 'package:dart_style/dart_style.dart';
import 'package:drift_dev/moor_generator.dart';
import 'package:drift_dev/src/cli/cli.dart';
import 'package:drift_dev/src/services/schema/schema_files.dart';
import 'package:drift_dev/writer.dart';
import 'package:path/path.dart' as p;
import '../../../analysis/results/file_results.dart';
import '../../../analysis/results/results.dart';
import '../../../analyzer/options.dart';
import '../../../services/schema/schema_files.dart';
import '../../../writer/database_writer.dart';
import '../../../writer/import_manager.dart';
import '../../../writer/writer.dart';
import '../../cli.dart';
class GenerateUtilsCommand extends Command {
final MoorCli cli;
@ -117,6 +120,7 @@ class GenerateUtilsCommand extends Command {
forSchema: version,
writeCompanions: companions,
writeDataClasses: dataClasses,
imports: ImportManagerForPartFiles(),
),
);
final file = File(p.join(output.path, _filenameForVersion(version)));
@ -126,12 +130,19 @@ class GenerateUtilsCommand extends Command {
..writeln('//@dart=2.12')
..writeln("import 'package:drift/drift.dart';");
final db = Database(
declaredQueries: const [],
final database = DriftDatabase(
id: DriftElementId(SchemaReader.elementUri, 'database'),
declaration: DriftDeclaration(SchemaReader.elementUri, 0, 'database'),
declaredIncludes: const [],
declaredQueries: const [],
declaredTables: const [],
)..entities = schema.schema;
DatabaseWriter(db, writer.child()).write();
declaredViews: const [],
);
final resolved =
ResolvedDatabaseAccessor(const {}, const [], schema.schema);
final input = DatabaseGenerationInput(database, resolved, const {});
DatabaseWriter(input, writer.child()).write();
return file.writeAsString(_dartfmt.format(writer.writeGenerated()));
}
@ -178,7 +189,7 @@ class GenerateUtilsCommand extends Command {
}
class _ExportedSchema {
final List<DriftSchemaEntity> schema;
final List<DriftElement> schema;
final Map<String, Object?> options;
_ExportedSchema(this.schema, this.options);

View File

@ -1,20 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of '../../../analysis/results/table.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
VirtualTableData _$VirtualTableDataFromJson(Map json) => VirtualTableData(
json['module'] as String,
(json['module_arguments'] as List<dynamic>)
.map((e) => e as String)
.toList(),
);
Map<String, dynamic> _$VirtualTableDataToJson(VirtualTableData instance) =>
<String, dynamic>{
'module': instance.module,
'module_arguments': instance.moduleArguments,
};

View File

@ -176,7 +176,7 @@ class SchemaWriter {
/// Reads files generated by [SchemaWriter].
class SchemaReader {
static final Uri _elementUri = Uri.parse('drift:hidden');
static final Uri elementUri = Uri.parse('drift:hidden');
final Map<int, DriftElement> _entitiesById = {};
final Map<int, Map<String, dynamic>> _rawById = {};
@ -218,10 +218,10 @@ class SchemaReader {
return _entitiesById[id as int] as T;
}
DriftElementId _id(String name) => DriftElementId(_elementUri, name);
DriftElementId _id(String name) => DriftElementId(elementUri, name);
DriftDeclaration get _declaration =>
DriftDeclaration(_elementUri, -1, '<unknown>');
DriftDeclaration(elementUri, -1, '<unknown>');
void _processById(int id) {
if (_entitiesById.containsKey(id)) return;