mirror of https://github.com/AMT-Cheif/drift.git
parent
4002898f26
commit
cd9b7101b4
|
@ -0,0 +1,15 @@
|
||||||
|
targets:
|
||||||
|
$default:
|
||||||
|
builders:
|
||||||
|
moor_generator:
|
||||||
|
enabled: false
|
||||||
|
moor_generator|moor_generator_not_shared:
|
||||||
|
enabled: true
|
||||||
|
built_value_generator|built_value:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
run_built_value:
|
||||||
|
dependencies: ['with_built_value']
|
||||||
|
builders:
|
||||||
|
moor_generator:
|
||||||
|
enabled: false
|
|
@ -0,0 +1,26 @@
|
||||||
|
import 'package:built_value/built_value.dart';
|
||||||
|
import 'package:moor/moor.dart';
|
||||||
|
import 'package:moor_ffi/moor_ffi.dart';
|
||||||
|
|
||||||
|
part 'database.moor.dart';
|
||||||
|
part 'database.g.dart';
|
||||||
|
|
||||||
|
abstract class Foo implements Built<Foo, FooBuilder> {
|
||||||
|
SomeInt get moorField;
|
||||||
|
|
||||||
|
Foo._();
|
||||||
|
|
||||||
|
factory Foo([void Function(FooBuilder) updates]) = _$Foo;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SomeInts extends Table {
|
||||||
|
IntColumn get id => integer().autoIncrement()();
|
||||||
|
}
|
||||||
|
|
||||||
|
@UseMoor(tables: [SomeInts])
|
||||||
|
class Database extends _$Database {
|
||||||
|
Database() : super(VmDatabase.memory());
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get schemaVersion => 1;
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'database.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// BuiltValueGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
class _$Foo extends Foo {
|
||||||
|
@override
|
||||||
|
final SomeInt moorField;
|
||||||
|
|
||||||
|
factory _$Foo([void Function(FooBuilder) updates]) =>
|
||||||
|
(new FooBuilder()..update(updates)).build();
|
||||||
|
|
||||||
|
_$Foo._({this.moorField}) : super._() {
|
||||||
|
if (moorField == null) {
|
||||||
|
throw new BuiltValueNullFieldError('Foo', 'moorField');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Foo rebuild(void Function(FooBuilder) updates) =>
|
||||||
|
(toBuilder()..update(updates)).build();
|
||||||
|
|
||||||
|
@override
|
||||||
|
FooBuilder toBuilder() => new FooBuilder()..replace(this);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
if (identical(other, this)) return true;
|
||||||
|
return other is Foo && moorField == other.moorField;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode {
|
||||||
|
return $jf($jc(0, moorField.hashCode));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return (newBuiltValueToStringHelper('Foo')..add('moorField', moorField))
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class FooBuilder implements Builder<Foo, FooBuilder> {
|
||||||
|
_$Foo _$v;
|
||||||
|
|
||||||
|
SomeInt _moorField;
|
||||||
|
SomeInt get moorField => _$this._moorField;
|
||||||
|
set moorField(SomeInt moorField) => _$this._moorField = moorField;
|
||||||
|
|
||||||
|
FooBuilder();
|
||||||
|
|
||||||
|
FooBuilder get _$this {
|
||||||
|
if (_$v != null) {
|
||||||
|
_moorField = _$v.moorField;
|
||||||
|
_$v = null;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void replace(Foo other) {
|
||||||
|
if (other == null) {
|
||||||
|
throw new ArgumentError.notNull('other');
|
||||||
|
}
|
||||||
|
_$v = other as _$Foo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void update(void Function(FooBuilder) updates) {
|
||||||
|
if (updates != null) updates(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
_$Foo build() {
|
||||||
|
final _$result = _$v ?? new _$Foo._(moorField: moorField);
|
||||||
|
replace(_$result);
|
||||||
|
return _$result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new
|
|
@ -0,0 +1,135 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'database.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// MoorGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// ignore_for_file: unnecessary_brace_in_string_interps, unnecessary_this
|
||||||
|
class SomeInt extends DataClass implements Insertable<SomeInt> {
|
||||||
|
final int id;
|
||||||
|
SomeInt({@required this.id});
|
||||||
|
factory SomeInt.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||||
|
{String prefix}) {
|
||||||
|
final effectivePrefix = prefix ?? '';
|
||||||
|
final intType = db.typeSystem.forDartType<int>();
|
||||||
|
return SomeInt(
|
||||||
|
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
factory SomeInt.fromJson(Map<String, dynamic> json,
|
||||||
|
{ValueSerializer serializer}) {
|
||||||
|
serializer ??= moorRuntimeOptions.defaultSerializer;
|
||||||
|
return SomeInt(
|
||||||
|
id: serializer.fromJson<int>(json['id']),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
@override
|
||||||
|
Map<String, dynamic> toJson({ValueSerializer serializer}) {
|
||||||
|
serializer ??= moorRuntimeOptions.defaultSerializer;
|
||||||
|
return <String, dynamic>{
|
||||||
|
'id': serializer.toJson<int>(id),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
SomeIntsCompanion createCompanion(bool nullToAbsent) {
|
||||||
|
return SomeIntsCompanion(
|
||||||
|
id: id == null && nullToAbsent ? const Value.absent() : Value(id),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
SomeInt copyWith({int id}) => SomeInt(
|
||||||
|
id: id ?? this.id,
|
||||||
|
);
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return (StringBuffer('SomeInt(')..write('id: $id')..write(')')).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => $mrjf(id.hashCode);
|
||||||
|
@override
|
||||||
|
bool operator ==(dynamic other) =>
|
||||||
|
identical(this, other) || (other is SomeInt && other.id == this.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
class SomeIntsCompanion extends UpdateCompanion<SomeInt> {
|
||||||
|
final Value<int> id;
|
||||||
|
const SomeIntsCompanion({
|
||||||
|
this.id = const Value.absent(),
|
||||||
|
});
|
||||||
|
SomeIntsCompanion.insert({
|
||||||
|
this.id = const Value.absent(),
|
||||||
|
});
|
||||||
|
SomeIntsCompanion copyWith({Value<int> id}) {
|
||||||
|
return SomeIntsCompanion(
|
||||||
|
id: id ?? this.id,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class $SomeIntsTable extends SomeInts with TableInfo<$SomeIntsTable, SomeInt> {
|
||||||
|
final GeneratedDatabase _db;
|
||||||
|
final String _alias;
|
||||||
|
$SomeIntsTable(this._db, [this._alias]);
|
||||||
|
final VerificationMeta _idMeta = const VerificationMeta('id');
|
||||||
|
GeneratedIntColumn _id;
|
||||||
|
@override
|
||||||
|
GeneratedIntColumn get id => _id ??= _constructId();
|
||||||
|
GeneratedIntColumn _constructId() {
|
||||||
|
return GeneratedIntColumn('id', $tableName, false,
|
||||||
|
hasAutoIncrement: true, declaredAsPrimaryKey: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<GeneratedColumn> get $columns => [id];
|
||||||
|
@override
|
||||||
|
$SomeIntsTable get asDslTable => this;
|
||||||
|
@override
|
||||||
|
String get $tableName => _alias ?? 'some_ints';
|
||||||
|
@override
|
||||||
|
final String actualTableName = 'some_ints';
|
||||||
|
@override
|
||||||
|
VerificationContext validateIntegrity(SomeIntsCompanion d,
|
||||||
|
{bool isInserting = false}) {
|
||||||
|
final context = VerificationContext();
|
||||||
|
if (d.id.present) {
|
||||||
|
context.handle(_idMeta, id.isAcceptableValue(d.id.value, _idMeta));
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Set<GeneratedColumn> get $primaryKey => {id};
|
||||||
|
@override
|
||||||
|
SomeInt map(Map<String, dynamic> data, {String tablePrefix}) {
|
||||||
|
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : null;
|
||||||
|
return SomeInt.fromData(data, _db, prefix: effectivePrefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map<String, Variable> entityToSql(SomeIntsCompanion d) {
|
||||||
|
final map = <String, Variable>{};
|
||||||
|
if (d.id.present) {
|
||||||
|
map['id'] = Variable<int, IntType>(d.id.value);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
$SomeIntsTable createAlias(String alias) {
|
||||||
|
return $SomeIntsTable(_db, alias);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _$Database extends GeneratedDatabase {
|
||||||
|
_$Database(QueryExecutor e) : super(SqlTypeSystem.defaultInstance, e);
|
||||||
|
$SomeIntsTable _someInts;
|
||||||
|
$SomeIntsTable get someInts => _someInts ??= $SomeIntsTable(this);
|
||||||
|
@override
|
||||||
|
Iterable<TableInfo> get allTables => allSchemaEntities.whereType<TableInfo>();
|
||||||
|
@override
|
||||||
|
List<DatabaseSchemaEntity> get allSchemaEntities => [someInts];
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
name: with_built_value
|
||||||
|
publish_to: none
|
||||||
|
version: 1.0.0
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: '>=2.6.0 <3.0.0'
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
moor: ^2.3.0
|
||||||
|
moor_ffi: ^0.4.0
|
||||||
|
built_value: ^7.0.0
|
||||||
|
|
||||||
|
dev_dependencies:
|
||||||
|
moor_generator: ^2.1.0
|
||||||
|
built_value_generator: ^7.0.0
|
||||||
|
build_runner: '>=1.3.0 <2.0.0'
|
||||||
|
|
||||||
|
dependency_overrides:
|
||||||
|
moor:
|
||||||
|
path: ../../moor
|
||||||
|
moor_ffi:
|
||||||
|
path: ../../moor_ffi
|
||||||
|
moor_generator:
|
||||||
|
path: ../../moor_generator
|
||||||
|
sqlparser:
|
||||||
|
path: ../../sqlparser
|
|
@ -1,3 +1,15 @@
|
||||||
|
# Short description for each builder
|
||||||
|
|
||||||
|
# - preparing_builder: Infers the type of inline Dart expressions in moor files.
|
||||||
|
# We create a `input.temp.dart` file containing the expressions so that they
|
||||||
|
# can be resolved.
|
||||||
|
# - moor_generator: The regular SharedPartBuilder for @UseMoor and @UseDao
|
||||||
|
# annotations
|
||||||
|
# - moor_generator_not_shared: Like moor_generator, but as a PartBuilder instead of
|
||||||
|
# a SharedPartBuilder. This builder is disabled by default, but users may choose
|
||||||
|
# to use it so that generated classes can be used by other builders.
|
||||||
|
# - moor_cleanup: Deletes the `.temp.dart` files generated by the `preparing_builder`.
|
||||||
|
|
||||||
builders:
|
builders:
|
||||||
preparing_builder:
|
preparing_builder:
|
||||||
import: "package:moor_generator/integrations/build.dart"
|
import: "package:moor_generator/integrations/build.dart"
|
||||||
|
@ -16,6 +28,14 @@ builders:
|
||||||
required_inputs: [".dart_in_moor"]
|
required_inputs: [".dart_in_moor"]
|
||||||
applies_builders: ["source_gen|combining_builder"]
|
applies_builders: ["source_gen|combining_builder"]
|
||||||
|
|
||||||
|
moor_generator_not_shared:
|
||||||
|
import: "package:moor_generator/integrations/build.dart"
|
||||||
|
builder_factories: ["moorBuilderNotShared"]
|
||||||
|
build_extensions: {".dart": [".moor.dart"]}
|
||||||
|
build_to: source
|
||||||
|
auto_apply: none
|
||||||
|
required_inputs: [".dart_in_moor"]
|
||||||
|
|
||||||
post_process_builders:
|
post_process_builders:
|
||||||
moor_cleanup:
|
moor_cleanup:
|
||||||
import: "package:moor_generator/integrations/build.dart"
|
import: "package:moor_generator/integrations/build.dart"
|
||||||
|
|
|
@ -2,7 +2,10 @@ import 'package:build/build.dart';
|
||||||
import 'package:moor_generator/src/backends/build/moor_builder.dart';
|
import 'package:moor_generator/src/backends/build/moor_builder.dart';
|
||||||
import 'package:moor_generator/src/backends/build/preprocess_builder.dart';
|
import 'package:moor_generator/src/backends/build/preprocess_builder.dart';
|
||||||
|
|
||||||
Builder moorBuilder(BuilderOptions options) => MoorBuilder(options);
|
Builder moorBuilder(BuilderOptions options) => MoorSharedPartBuilder(options);
|
||||||
|
|
||||||
|
Builder moorBuilderNotShared(BuilderOptions options) =>
|
||||||
|
MoorPartBuilder(options);
|
||||||
|
|
||||||
Builder preparingBuilder(BuilderOptions options) => PreprocessBuilder();
|
Builder preparingBuilder(BuilderOptions options) => PreprocessBuilder();
|
||||||
|
|
||||||
|
|
|
@ -10,28 +10,8 @@ import 'package:moor_generator/src/backends/build/generators/moor_generator.dart
|
||||||
import 'package:moor_generator/writer.dart';
|
import 'package:moor_generator/writer.dart';
|
||||||
import 'package:source_gen/source_gen.dart';
|
import 'package:source_gen/source_gen.dart';
|
||||||
|
|
||||||
class MoorBuilder extends SharedPartBuilder {
|
mixin MoorBuilder on Builder {
|
||||||
final MoorOptions options;
|
MoorOptions get options;
|
||||||
|
|
||||||
MoorBuilder._(List<Generator> generators, String name, this.options)
|
|
||||||
: super(generators, name);
|
|
||||||
|
|
||||||
factory MoorBuilder(BuilderOptions options) {
|
|
||||||
final parsedOptions = MoorOptions.fromJson(options.config);
|
|
||||||
|
|
||||||
final generators = <Generator>[
|
|
||||||
MoorGenerator(),
|
|
||||||
DaoGenerator(),
|
|
||||||
];
|
|
||||||
|
|
||||||
final builder = MoorBuilder._(generators, 'moor', parsedOptions);
|
|
||||||
|
|
||||||
for (final generator in generators.cast<BaseGenerator>()) {
|
|
||||||
generator.builder = builder;
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder;
|
|
||||||
}
|
|
||||||
|
|
||||||
Writer createWriter() => Writer(options);
|
Writer createWriter() => Writer(options);
|
||||||
|
|
||||||
|
@ -54,6 +34,54 @@ class MoorBuilder extends SharedPartBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
T _createBuilder<T extends MoorBuilder>(
|
||||||
|
BuilderOptions options,
|
||||||
|
T Function(List<Generator> generators, MoorOptions parsedOptions) creator,
|
||||||
|
) {
|
||||||
|
final parsedOptions = MoorOptions.fromJson(options.config);
|
||||||
|
|
||||||
|
final generators = <Generator>[
|
||||||
|
MoorGenerator(),
|
||||||
|
DaoGenerator(),
|
||||||
|
];
|
||||||
|
|
||||||
|
final builder = creator(generators, parsedOptions);
|
||||||
|
|
||||||
|
for (final generator in generators.cast<BaseGenerator>()) {
|
||||||
|
generator.builder = builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
class MoorSharedPartBuilder extends SharedPartBuilder with MoorBuilder {
|
||||||
|
@override
|
||||||
|
final MoorOptions options;
|
||||||
|
|
||||||
|
MoorSharedPartBuilder._(List<Generator> generators, String name, this.options)
|
||||||
|
: super(generators, name);
|
||||||
|
|
||||||
|
factory MoorSharedPartBuilder(BuilderOptions options) {
|
||||||
|
return _createBuilder(options, (generators, parsedOptions) {
|
||||||
|
return MoorSharedPartBuilder._(generators, 'moor', parsedOptions);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MoorPartBuilder extends PartBuilder with MoorBuilder {
|
||||||
|
@override
|
||||||
|
final MoorOptions options;
|
||||||
|
|
||||||
|
MoorPartBuilder._(List<Generator> generators, String extension, this.options)
|
||||||
|
: super(generators, extension);
|
||||||
|
|
||||||
|
factory MoorPartBuilder(BuilderOptions options) {
|
||||||
|
return _createBuilder(options, (generators, parsedOptions) {
|
||||||
|
return MoorPartBuilder._(generators, '.moor.dart', parsedOptions);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
abstract class BaseGenerator {
|
abstract class BaseGenerator {
|
||||||
MoorBuilder builder;
|
MoorBuilder builder;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue