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:
|
||||
preparing_builder:
|
||||
import: "package:moor_generator/integrations/build.dart"
|
||||
|
@ -16,6 +28,14 @@ builders:
|
|||
required_inputs: [".dart_in_moor"]
|
||||
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:
|
||||
moor_cleanup:
|
||||
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/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();
|
||||
|
||||
|
|
|
@ -10,28 +10,8 @@ import 'package:moor_generator/src/backends/build/generators/moor_generator.dart
|
|||
import 'package:moor_generator/writer.dart';
|
||||
import 'package:source_gen/source_gen.dart';
|
||||
|
||||
class MoorBuilder extends SharedPartBuilder {
|
||||
final MoorOptions 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;
|
||||
}
|
||||
mixin MoorBuilder on Builder {
|
||||
MoorOptions get 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 {
|
||||
MoorBuilder builder;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue