gen@2.0.4
This commit is contained in:
parent
13b7e40a44
commit
76016f2062
9 changed files with 298 additions and 160 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
# 2.0.4
|
||||||
|
* Fix `reviveColumn` and element finding to properly detect all annotations now.
|
||||||
|
|
||||||
# 2.0.3
|
# 2.0.3
|
||||||
* Remove `targets` in `build.yaml`.
|
* Remove `targets` in `build.yaml`.
|
||||||
|
|
||||||
|
|
|
@ -16,26 +16,4 @@ builders:
|
||||||
applies_builders:
|
applies_builders:
|
||||||
- angel_serialize_generator|angel_serialize
|
- angel_serialize_generator|angel_serialize
|
||||||
- source_gen|combining_builder
|
- source_gen|combining_builder
|
||||||
- source_gen|part_cleanup"
|
- source_gen|part_cleanup"
|
||||||
# targets:
|
|
||||||
# _standalone:
|
|
||||||
# sources:
|
|
||||||
# - test/models/author.dart
|
|
||||||
# - test/models/car.dart
|
|
||||||
# - test/models/customer.dart
|
|
||||||
# - test/models/foot.dart
|
|
||||||
# - test/models/fruit.dart
|
|
||||||
# - test/models/has_map.dart
|
|
||||||
# - test/models/role.dart
|
|
||||||
# - test/models/unorthodox.dart
|
|
||||||
# $default:
|
|
||||||
# dependencies:
|
|
||||||
# - angel_serialize_generator
|
|
||||||
# - :_standalone
|
|
||||||
# sources:
|
|
||||||
# - test/models/book.dart
|
|
||||||
# - test/models/has_car.dart
|
|
||||||
# - test/models/leg.dart
|
|
||||||
# - test/models/order.dart
|
|
||||||
# - test/models/tree.dart
|
|
||||||
# - test/models/user.dart
|
|
|
@ -1,11 +1,10 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'package:angel_migration/angel_migration.dart';
|
||||||
import 'package:angel_model/angel_model.dart';
|
import 'package:angel_model/angel_model.dart';
|
||||||
import 'package:angel_orm/angel_orm.dart';
|
import 'package:angel_orm/angel_orm.dart';
|
||||||
import 'package:angel_orm/src/query.dart';
|
import 'package:angel_orm/src/query.dart';
|
||||||
import 'package:angel_serialize/angel_serialize.dart';
|
import 'package:angel_serialize/angel_serialize.dart';
|
||||||
part 'main.g.dart';
|
part 'main.g.dart';
|
||||||
part 'main.serializer.g.dart';
|
|
||||||
|
|
||||||
main() async {
|
main() async {
|
||||||
var query = new EmployeeQuery()
|
var query = new EmployeeQuery()
|
||||||
|
@ -46,67 +45,8 @@ abstract class _Employee extends Model {
|
||||||
|
|
||||||
String get lastName;
|
String get lastName;
|
||||||
|
|
||||||
|
@Column(indexType: IndexType.unique)
|
||||||
|
String uniqueId;
|
||||||
|
|
||||||
double get salary;
|
double get salary;
|
||||||
}
|
}
|
||||||
|
|
||||||
class EmployeeQuery extends Query<Employee, EmployeeQueryWhere> {
|
|
||||||
@override
|
|
||||||
final QueryValues values = new MapQueryValues();
|
|
||||||
|
|
||||||
EmployeeQueryWhere _where;
|
|
||||||
|
|
||||||
EmployeeQuery() {
|
|
||||||
_where = new EmployeeQueryWhere(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
EmployeeQueryWhere get where => _where;
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get tableName => 'employees';
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<String> get fields =>
|
|
||||||
['id', 'first_name', 'last_name', 'salary', 'created_at', 'updated_at'];
|
|
||||||
|
|
||||||
@override
|
|
||||||
EmployeeQueryWhere newWhereClause() => new EmployeeQueryWhere(this);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Employee deserialize(List row) {
|
|
||||||
return new Employee(
|
|
||||||
id: row[0].toString(),
|
|
||||||
firstName: row[1] as String,
|
|
||||||
lastName: row[2] as String,
|
|
||||||
salary: row[3] as double,
|
|
||||||
createdAt: row[4] as DateTime,
|
|
||||||
updatedAt: row[5] as DateTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class EmployeeQueryWhere extends QueryWhere {
|
|
||||||
EmployeeQueryWhere(EmployeeQuery query)
|
|
||||||
: id = new NumericSqlExpressionBuilder(query, 'id'),
|
|
||||||
firstName = new StringSqlExpressionBuilder(query, 'first_name'),
|
|
||||||
lastName = new StringSqlExpressionBuilder(query, 'last_name'),
|
|
||||||
salary = new NumericSqlExpressionBuilder(query, 'salary'),
|
|
||||||
createdAt = new DateTimeSqlExpressionBuilder(query, 'created_at'),
|
|
||||||
updatedAt = new DateTimeSqlExpressionBuilder(query, 'updated_at');
|
|
||||||
|
|
||||||
@override
|
|
||||||
Iterable<SqlExpressionBuilder> get expressionBuilders {
|
|
||||||
return [id, firstName, lastName, salary, createdAt, updatedAt];
|
|
||||||
}
|
|
||||||
|
|
||||||
final NumericSqlExpressionBuilder<int> id;
|
|
||||||
|
|
||||||
final StringSqlExpressionBuilder firstName;
|
|
||||||
|
|
||||||
final StringSqlExpressionBuilder lastName;
|
|
||||||
|
|
||||||
final NumericSqlExpressionBuilder<double> salary;
|
|
||||||
|
|
||||||
final DateTimeSqlExpressionBuilder createdAt;
|
|
||||||
|
|
||||||
final DateTimeSqlExpressionBuilder updatedAt;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,6 +2,179 @@
|
||||||
|
|
||||||
part of 'main.dart';
|
part of 'main.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// MigrationGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
class EmployeeMigration extends Migration {
|
||||||
|
@override
|
||||||
|
up(Schema schema) {
|
||||||
|
schema.create('employees', (table) {
|
||||||
|
table.serial('id')..primaryKey();
|
||||||
|
table.varChar('unique_id')..unique();
|
||||||
|
table.varChar('first_name');
|
||||||
|
table.varChar('last_name');
|
||||||
|
table.declare('salary', ColumnType('decimal'));
|
||||||
|
table.timeStamp('created_at');
|
||||||
|
table.timeStamp('updated_at');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
down(Schema schema) {
|
||||||
|
schema.drop('employees');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// OrmGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
class EmployeeQuery extends Query<Employee, EmployeeQueryWhere> {
|
||||||
|
EmployeeQuery({Set<String> trampoline}) {
|
||||||
|
trampoline ??= Set();
|
||||||
|
trampoline.add(tableName);
|
||||||
|
_where = EmployeeQueryWhere(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
final EmployeeQueryValues values = EmployeeQueryValues();
|
||||||
|
|
||||||
|
EmployeeQueryWhere _where;
|
||||||
|
|
||||||
|
@override
|
||||||
|
get casts {
|
||||||
|
return {'salary': 'text'};
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
get tableName {
|
||||||
|
return 'employees';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
get fields {
|
||||||
|
return const [
|
||||||
|
'id',
|
||||||
|
'unique_id',
|
||||||
|
'first_name',
|
||||||
|
'last_name',
|
||||||
|
'salary',
|
||||||
|
'created_at',
|
||||||
|
'updated_at'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
EmployeeQueryWhere get where {
|
||||||
|
return _where;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
EmployeeQueryWhere newWhereClause() {
|
||||||
|
return EmployeeQueryWhere(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Employee parseRow(List row) {
|
||||||
|
if (row.every((x) => x == null)) return null;
|
||||||
|
var model = Employee(
|
||||||
|
id: row[0].toString(),
|
||||||
|
uniqueId: (row[1] as String),
|
||||||
|
firstName: (row[2] as String),
|
||||||
|
lastName: (row[3] as String),
|
||||||
|
salary: double.tryParse(row[4].toString()),
|
||||||
|
createdAt: (row[5] as DateTime),
|
||||||
|
updatedAt: (row[6] as DateTime));
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
deserialize(List row) {
|
||||||
|
return parseRow(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EmployeeQueryWhere extends QueryWhere {
|
||||||
|
EmployeeQueryWhere(EmployeeQuery query)
|
||||||
|
: id = NumericSqlExpressionBuilder<int>(query, 'id'),
|
||||||
|
uniqueId = StringSqlExpressionBuilder(query, 'unique_id'),
|
||||||
|
firstName = StringSqlExpressionBuilder(query, 'first_name'),
|
||||||
|
lastName = StringSqlExpressionBuilder(query, 'last_name'),
|
||||||
|
salary = NumericSqlExpressionBuilder<double>(query, 'salary'),
|
||||||
|
createdAt = DateTimeSqlExpressionBuilder(query, 'created_at'),
|
||||||
|
updatedAt = DateTimeSqlExpressionBuilder(query, 'updated_at');
|
||||||
|
|
||||||
|
final NumericSqlExpressionBuilder<int> id;
|
||||||
|
|
||||||
|
final StringSqlExpressionBuilder uniqueId;
|
||||||
|
|
||||||
|
final StringSqlExpressionBuilder firstName;
|
||||||
|
|
||||||
|
final StringSqlExpressionBuilder lastName;
|
||||||
|
|
||||||
|
final NumericSqlExpressionBuilder<double> salary;
|
||||||
|
|
||||||
|
final DateTimeSqlExpressionBuilder createdAt;
|
||||||
|
|
||||||
|
final DateTimeSqlExpressionBuilder updatedAt;
|
||||||
|
|
||||||
|
@override
|
||||||
|
get expressionBuilders {
|
||||||
|
return [id, uniqueId, firstName, lastName, salary, createdAt, updatedAt];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EmployeeQueryValues extends MapQueryValues {
|
||||||
|
@override
|
||||||
|
get casts {
|
||||||
|
return {'salary': 'decimal'};
|
||||||
|
}
|
||||||
|
|
||||||
|
String get id {
|
||||||
|
return (values['id'] as String);
|
||||||
|
}
|
||||||
|
|
||||||
|
set id(String value) => values['id'] = value;
|
||||||
|
String get uniqueId {
|
||||||
|
return (values['unique_id'] as String);
|
||||||
|
}
|
||||||
|
|
||||||
|
set uniqueId(String value) => values['unique_id'] = value;
|
||||||
|
String get firstName {
|
||||||
|
return (values['first_name'] as String);
|
||||||
|
}
|
||||||
|
|
||||||
|
set firstName(String value) => values['first_name'] = value;
|
||||||
|
String get lastName {
|
||||||
|
return (values['last_name'] as String);
|
||||||
|
}
|
||||||
|
|
||||||
|
set lastName(String value) => values['last_name'] = value;
|
||||||
|
double get salary {
|
||||||
|
return double.tryParse((values['salary'] as String));
|
||||||
|
}
|
||||||
|
|
||||||
|
set salary(double value) => values['salary'] = value.toString();
|
||||||
|
DateTime get createdAt {
|
||||||
|
return (values['created_at'] as DateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
set createdAt(DateTime value) => values['created_at'] = value;
|
||||||
|
DateTime get updatedAt {
|
||||||
|
return (values['updated_at'] as DateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
set updatedAt(DateTime value) => values['updated_at'] = value;
|
||||||
|
void copyFrom(Employee model) {
|
||||||
|
uniqueId = model.uniqueId;
|
||||||
|
firstName = model.firstName;
|
||||||
|
lastName = model.lastName;
|
||||||
|
salary = model.salary;
|
||||||
|
createdAt = model.createdAt;
|
||||||
|
updatedAt = model.updatedAt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
// JsonModelGenerator
|
// JsonModelGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
@ -10,6 +183,7 @@ part of 'main.dart';
|
||||||
class Employee extends _Employee {
|
class Employee extends _Employee {
|
||||||
Employee(
|
Employee(
|
||||||
{this.id,
|
{this.id,
|
||||||
|
this.uniqueId,
|
||||||
this.firstName,
|
this.firstName,
|
||||||
this.lastName,
|
this.lastName,
|
||||||
this.salary,
|
this.salary,
|
||||||
|
@ -19,6 +193,9 @@ class Employee extends _Employee {
|
||||||
@override
|
@override
|
||||||
final String id;
|
final String id;
|
||||||
|
|
||||||
|
@override
|
||||||
|
final String uniqueId;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final String firstName;
|
final String firstName;
|
||||||
|
|
||||||
|
@ -36,6 +213,7 @@ class Employee extends _Employee {
|
||||||
|
|
||||||
Employee copyWith(
|
Employee copyWith(
|
||||||
{String id,
|
{String id,
|
||||||
|
String uniqueId,
|
||||||
String firstName,
|
String firstName,
|
||||||
String lastName,
|
String lastName,
|
||||||
double salary,
|
double salary,
|
||||||
|
@ -43,6 +221,7 @@ class Employee extends _Employee {
|
||||||
DateTime updatedAt}) {
|
DateTime updatedAt}) {
|
||||||
return new Employee(
|
return new Employee(
|
||||||
id: id ?? this.id,
|
id: id ?? this.id,
|
||||||
|
uniqueId: uniqueId ?? this.uniqueId,
|
||||||
firstName: firstName ?? this.firstName,
|
firstName: firstName ?? this.firstName,
|
||||||
lastName: lastName ?? this.lastName,
|
lastName: lastName ?? this.lastName,
|
||||||
salary: salary ?? this.salary,
|
salary: salary ?? this.salary,
|
||||||
|
@ -53,6 +232,7 @@ class Employee extends _Employee {
|
||||||
bool operator ==(other) {
|
bool operator ==(other) {
|
||||||
return other is _Employee &&
|
return other is _Employee &&
|
||||||
other.id == id &&
|
other.id == id &&
|
||||||
|
other.uniqueId == uniqueId &&
|
||||||
other.firstName == firstName &&
|
other.firstName == firstName &&
|
||||||
other.lastName == lastName &&
|
other.lastName == lastName &&
|
||||||
other.salary == salary &&
|
other.salary == salary &&
|
||||||
|
@ -62,10 +242,104 @@ class Employee extends _Employee {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode {
|
int get hashCode {
|
||||||
return hashObjects([id, firstName, lastName, salary, createdAt, updatedAt]);
|
return hashObjects(
|
||||||
|
[id, uniqueId, firstName, lastName, salary, createdAt, updatedAt]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return "Employee(id=$id, uniqueId=$uniqueId, firstName=$firstName, lastName=$lastName, salary=$salary, createdAt=$createdAt, updatedAt=$updatedAt)";
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
return EmployeeSerializer.toMap(this);
|
return EmployeeSerializer.toMap(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// SerializerGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
const EmployeeSerializer employeeSerializer = const EmployeeSerializer();
|
||||||
|
|
||||||
|
class EmployeeEncoder extends Converter<Employee, Map> {
|
||||||
|
const EmployeeEncoder();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map convert(Employee model) => EmployeeSerializer.toMap(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
class EmployeeDecoder extends Converter<Map, Employee> {
|
||||||
|
const EmployeeDecoder();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Employee convert(Map map) => EmployeeSerializer.fromMap(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
class EmployeeSerializer extends Codec<Employee, Map> {
|
||||||
|
const EmployeeSerializer();
|
||||||
|
|
||||||
|
@override
|
||||||
|
get encoder => const EmployeeEncoder();
|
||||||
|
@override
|
||||||
|
get decoder => const EmployeeDecoder();
|
||||||
|
static Employee fromMap(Map map) {
|
||||||
|
return new Employee(
|
||||||
|
id: map['id'] as String,
|
||||||
|
uniqueId: map['unique_id'] as String,
|
||||||
|
firstName: map['first_name'] as String,
|
||||||
|
lastName: map['last_name'] as String,
|
||||||
|
salary: map['salary'] as double,
|
||||||
|
createdAt: map['created_at'] != null
|
||||||
|
? (map['created_at'] is DateTime
|
||||||
|
? (map['created_at'] as DateTime)
|
||||||
|
: DateTime.parse(map['created_at'].toString()))
|
||||||
|
: null,
|
||||||
|
updatedAt: map['updated_at'] != null
|
||||||
|
? (map['updated_at'] is DateTime
|
||||||
|
? (map['updated_at'] as DateTime)
|
||||||
|
: DateTime.parse(map['updated_at'].toString()))
|
||||||
|
: null);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Map<String, dynamic> toMap(_Employee model) {
|
||||||
|
if (model == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
'id': model.id,
|
||||||
|
'unique_id': model.uniqueId,
|
||||||
|
'first_name': model.firstName,
|
||||||
|
'last_name': model.lastName,
|
||||||
|
'salary': model.salary,
|
||||||
|
'created_at': model.createdAt?.toIso8601String(),
|
||||||
|
'updated_at': model.updatedAt?.toIso8601String()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class EmployeeFields {
|
||||||
|
static const List<String> allFields = <String>[
|
||||||
|
id,
|
||||||
|
uniqueId,
|
||||||
|
firstName,
|
||||||
|
lastName,
|
||||||
|
salary,
|
||||||
|
createdAt,
|
||||||
|
updatedAt
|
||||||
|
];
|
||||||
|
|
||||||
|
static const String id = 'id';
|
||||||
|
|
||||||
|
static const String uniqueId = 'unique_id';
|
||||||
|
|
||||||
|
static const String firstName = 'first_name';
|
||||||
|
|
||||||
|
static const String lastName = 'last_name';
|
||||||
|
|
||||||
|
static const String salary = 'salary';
|
||||||
|
|
||||||
|
static const String createdAt = 'created_at';
|
||||||
|
|
||||||
|
static const String updatedAt = 'updated_at';
|
||||||
|
}
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
||||||
|
|
||||||
part of 'main.dart';
|
|
||||||
|
|
||||||
// **************************************************************************
|
|
||||||
// SerializerGenerator
|
|
||||||
// **************************************************************************
|
|
||||||
|
|
||||||
abstract class EmployeeSerializer {
|
|
||||||
static Employee fromMap(Map map) {
|
|
||||||
return new Employee(
|
|
||||||
id: map['id'] as String,
|
|
||||||
firstName: map['first_name'] as String,
|
|
||||||
lastName: map['last_name'] as String,
|
|
||||||
salary: map['salary'] as double,
|
|
||||||
createdAt: map['created_at'] != null
|
|
||||||
? (map['created_at'] is DateTime
|
|
||||||
? (map['created_at'] as DateTime)
|
|
||||||
: DateTime.parse(map['created_at'].toString()))
|
|
||||||
: null,
|
|
||||||
updatedAt: map['updated_at'] != null
|
|
||||||
? (map['updated_at'] is DateTime
|
|
||||||
? (map['updated_at'] as DateTime)
|
|
||||||
: DateTime.parse(map['updated_at'].toString()))
|
|
||||||
: null);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Map<String, dynamic> toMap(Employee model) {
|
|
||||||
if (model == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
'id': model.id,
|
|
||||||
'first_name': model.firstName,
|
|
||||||
'last_name': model.lastName,
|
|
||||||
'salary': model.salary,
|
|
||||||
'created_at': model.createdAt?.toIso8601String(),
|
|
||||||
'updated_at': model.updatedAt?.toIso8601String()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class EmployeeFields {
|
|
||||||
static const List<String> allFields = const <String>[
|
|
||||||
id,
|
|
||||||
firstName,
|
|
||||||
lastName,
|
|
||||||
salary,
|
|
||||||
createdAt,
|
|
||||||
updatedAt
|
|
||||||
];
|
|
||||||
|
|
||||||
static const String id = 'id';
|
|
||||||
|
|
||||||
static const String firstName = 'first_name';
|
|
||||||
|
|
||||||
static const String lastName = 'last_name';
|
|
||||||
|
|
||||||
static const String salary = 'salary';
|
|
||||||
|
|
||||||
static const String createdAt = 'created_at';
|
|
||||||
|
|
||||||
static const String updatedAt = 'updated_at';
|
|
||||||
}
|
|
|
@ -27,11 +27,15 @@ bool isSpecialId(OrmBuildContext ctx, FieldElement field) {
|
||||||
.isAssignableFromType(ctx.buildContext.clazz.type));
|
.isAssignableFromType(ctx.buildContext.clazz.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Element _findElement(FieldElement field) {
|
||||||
|
return (field.setter == null ? field.getter : field) ?? field;
|
||||||
|
}
|
||||||
|
|
||||||
FieldElement findPrimaryFieldInList(
|
FieldElement findPrimaryFieldInList(
|
||||||
OrmBuildContext ctx, Iterable<FieldElement> fields) {
|
OrmBuildContext ctx, Iterable<FieldElement> fields) {
|
||||||
for (var field_ in fields) {
|
for (var field_ in fields) {
|
||||||
var field = field_ is RelationFieldImpl ? field_.originalField : field_;
|
var field = field_ is RelationFieldImpl ? field_.originalField : field_;
|
||||||
var element = field.getter ?? field;
|
var element = _findElement(field);
|
||||||
// print(
|
// print(
|
||||||
// 'Searching in ${ctx.buildContext.originalClassName}=>${field?.name} (${field.runtimeType})');
|
// 'Searching in ${ctx.buildContext.originalClassName}=>${field?.name} (${field.runtimeType})');
|
||||||
// Check for column annotation...
|
// Check for column annotation...
|
||||||
|
@ -95,8 +99,9 @@ Future<OrmBuildContext> buildOrmContext(
|
||||||
for (var field in buildCtx.fields) {
|
for (var field in buildCtx.fields) {
|
||||||
// Check for column annotation...
|
// Check for column annotation...
|
||||||
Column column;
|
Column column;
|
||||||
var element = field.getter ?? field;
|
var element = _findElement(field);
|
||||||
var columnAnnotation = columnTypeChecker.firstAnnotationOf(element);
|
var columnAnnotation = columnTypeChecker.firstAnnotationOf(element);
|
||||||
|
// print('${element.name} => $columnAnnotation');
|
||||||
|
|
||||||
if (columnAnnotation != null) {
|
if (columnAnnotation != null) {
|
||||||
column = reviveColumn(new ConstantReader(columnAnnotation));
|
column = reviveColumn(new ConstantReader(columnAnnotation));
|
||||||
|
@ -128,7 +133,7 @@ Future<OrmBuildContext> buildOrmContext(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to find a relationship
|
// Try to find a relationship
|
||||||
var el = field.setter == null ? field.getter : field;
|
var el = _findElement(field);
|
||||||
el ??= field;
|
el ??= field;
|
||||||
var ann = relationshipTypeChecker.firstAnnotationOf(el);
|
var ann = relationshipTypeChecker.firstAnnotationOf(el);
|
||||||
|
|
||||||
|
@ -296,11 +301,13 @@ ColumnType inferColumnType(DartType type) {
|
||||||
Column reviveColumn(ConstantReader cr) {
|
Column reviveColumn(ConstantReader cr) {
|
||||||
ColumnType columnType;
|
ColumnType columnType;
|
||||||
|
|
||||||
|
var indexTypeObj = cr.peek('indexType')?.objectValue;
|
||||||
|
indexTypeObj ??= cr.revive().namedArguments['indexType'];
|
||||||
|
|
||||||
var columnObj =
|
var columnObj =
|
||||||
cr.peek('type')?.objectValue?.getField('name')?.toStringValue();
|
cr.peek('type')?.objectValue?.getField('name')?.toStringValue();
|
||||||
var indexType = IndexType.values[
|
var indexType = IndexType.values[
|
||||||
cr.peek('indexType')?.objectValue?.getField('index')?.toIntValue() ??
|
indexTypeObj?.getField('index')?.toIntValue() ?? IndexType.none.index];
|
||||||
IndexType.none.index];
|
|
||||||
|
|
||||||
if (const TypeChecker.fromRuntime(PrimaryKey)
|
if (const TypeChecker.fromRuntime(PrimaryKey)
|
||||||
.isAssignableFromType(cr.objectValue.type)) {
|
.isAssignableFromType(cr.objectValue.type)) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: angel_orm_generator
|
name: angel_orm_generator
|
||||||
version: 2.0.3
|
version: 2.0.4
|
||||||
description: Code generators for Angel's ORM. Generates query builder classes.
|
description: Code generators for Angel's ORM. Generates query builder classes.
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
homepage: https://github.com/angel-dart/orm
|
homepage: https://github.com/angel-dart/orm
|
||||||
|
|
|
@ -11,7 +11,7 @@ class TreeMigration extends Migration {
|
||||||
up(Schema schema) {
|
up(Schema schema) {
|
||||||
schema.create('trees', (table) {
|
schema.create('trees', (table) {
|
||||||
table.serial('id')..primaryKey();
|
table.serial('id')..primaryKey();
|
||||||
table.integer('rings');
|
table.declare('rings', ColumnType('smallint'));
|
||||||
table.timeStamp('created_at');
|
table.timeStamp('created_at');
|
||||||
table.timeStamp('updated_at');
|
table.timeStamp('updated_at');
|
||||||
});
|
});
|
||||||
|
|
|
@ -56,7 +56,7 @@ class NumbaMigration extends Migration {
|
||||||
@override
|
@override
|
||||||
up(Schema schema) {
|
up(Schema schema) {
|
||||||
schema.create('numbas', (table) {
|
schema.create('numbas', (table) {
|
||||||
table.integer('i');
|
table.declare('i', ColumnType('serial'))..primaryKey();
|
||||||
table.integer('parent');
|
table.integer('parent');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue