Skip to content
This repository has been archived by the owner on Feb 17, 2020. It is now read-only.

Commit

Permalink
Auto-migration generation
Browse files Browse the repository at this point in the history
  • Loading branch information
thosakwe committed Nov 18, 2017
1 parent ff3e3b5 commit 97989a6
Show file tree
Hide file tree
Showing 21 changed files with 385 additions and 166 deletions.
9 changes: 4 additions & 5 deletions .idea/orm.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

76 changes: 38 additions & 38 deletions angel_orm/lib/src/migration.dart
Expand Up @@ -56,57 +56,57 @@ enum IndexType {
class ColumnType {
/// The name of this data type.
final String name;
const ColumnType._(this.name);
const ColumnType(this.name);

static const ColumnType BOOLEAN = const ColumnType._('boolean');
static const ColumnType BOOLEAN = const ColumnType('boolean');

static const ColumnType SMALL_SERIAL = const ColumnType._('smallserial');
static const ColumnType SERIAL = const ColumnType._('serial');
static const ColumnType BIG_SERIAL = const ColumnType._('bigserial');
static const ColumnType SMALL_SERIAL = const ColumnType('smallserial');
static const ColumnType SERIAL = const ColumnType('serial');
static const ColumnType BIG_SERIAL = const ColumnType('bigserial');

// Numbers
static const ColumnType BIG_INT = const ColumnType._('bigint');
static const ColumnType INT = const ColumnType._('int');
static const ColumnType SMALL_INT = const ColumnType._('smallint');
static const ColumnType TINY_INT = const ColumnType._('tinyint');
static const ColumnType BIT = const ColumnType._('bit');
static const ColumnType DECIMAL = const ColumnType._('decimal');
static const ColumnType NUMERIC = const ColumnType._('numeric');
static const ColumnType MONEY = const ColumnType._('money');
static const ColumnType SMALL_MONEY = const ColumnType._('smallmoney');
static const ColumnType FLOAT = const ColumnType._('float');
static const ColumnType REAL = const ColumnType._('real');
static const ColumnType BIG_INT = const ColumnType('bigint');
static const ColumnType INT = const ColumnType('int');
static const ColumnType SMALL_INT = const ColumnType('smallint');
static const ColumnType TINY_INT = const ColumnType('tinyint');
static const ColumnType BIT = const ColumnType('bit');
static const ColumnType DECIMAL = const ColumnType('decimal');
static const ColumnType NUMERIC = const ColumnType('numeric');
static const ColumnType MONEY = const ColumnType('money');
static const ColumnType SMALL_MONEY = const ColumnType('smallmoney');
static const ColumnType FLOAT = const ColumnType('float');
static const ColumnType REAL = const ColumnType('real');

// Dates and times
static const ColumnType DATE_TIME = const ColumnType._('datetime');
static const ColumnType SMALL_DATE_TIME = const ColumnType._('smalldatetime');
static const ColumnType DATE = const ColumnType._('date');
static const ColumnType TIME = const ColumnType._('time');
static const ColumnType TIME_STAMP = const ColumnType._('timestamp');
static const ColumnType DATE_TIME = const ColumnType('datetime');
static const ColumnType SMALL_DATE_TIME = const ColumnType('smalldatetime');
static const ColumnType DATE = const ColumnType('date');
static const ColumnType TIME = const ColumnType('time');
static const ColumnType TIME_STAMP = const ColumnType('timestamp');

// Strings
static const ColumnType CHAR = const ColumnType._('char');
static const ColumnType VAR_CHAR = const ColumnType._('varchar');
static const ColumnType VAR_CHAR_MAX = const ColumnType._('varchar(max)');
static const ColumnType TEXT = const ColumnType._('text');
static const ColumnType CHAR = const ColumnType('char');
static const ColumnType VAR_CHAR = const ColumnType('varchar');
static const ColumnType VAR_CHAR_MAX = const ColumnType('varchar(max)');
static const ColumnType TEXT = const ColumnType('text');

// Unicode strings
static const ColumnType NCHAR = const ColumnType._('nchar');
static const ColumnType NVAR_CHAR = const ColumnType._('nvarchar');
static const ColumnType NVAR_CHAR_MAX = const ColumnType._('nvarchar(max)');
static const ColumnType NTEXT = const ColumnType._('ntext');
static const ColumnType NCHAR = const ColumnType('nchar');
static const ColumnType NVAR_CHAR = const ColumnType('nvarchar');
static const ColumnType NVAR_CHAR_MAX = const ColumnType('nvarchar(max)');
static const ColumnType NTEXT = const ColumnType('ntext');

// Binary
static const ColumnType BINARY = const ColumnType._('binary');
static const ColumnType VAR_BINARY = const ColumnType._('varbinary');
static const ColumnType VAR_BINARY_MAX = const ColumnType._('varbinary(max)');
static const ColumnType IMAGE = const ColumnType._('image');
static const ColumnType BINARY = const ColumnType('binary');
static const ColumnType VAR_BINARY = const ColumnType('varbinary');
static const ColumnType VAR_BINARY_MAX = const ColumnType('varbinary(max)');
static const ColumnType IMAGE = const ColumnType('image');

// Misc.
static const ColumnType SQL_VARIANT = const ColumnType._('sql_variant');
static const ColumnType SQL_VARIANT = const ColumnType('sql_variant');
static const ColumnType UNIQUE_IDENTIFIER =
const ColumnType._('uniqueidentifier');
static const ColumnType XML = const ColumnType._('xml');
static const ColumnType CURSOR = const ColumnType._('cursor');
static const ColumnType TABLE = const ColumnType._('table');
const ColumnType('uniqueidentifier');
static const ColumnType XML = const ColumnType('xml');
static const ColumnType CURSOR = const ColumnType('cursor');
static const ColumnType TABLE = const ColumnType('table');
}
2 changes: 1 addition & 1 deletion angel_orm/pubspec.yaml
@@ -1,5 +1,5 @@
name: angel_orm
version: 1.0.0-alpha+7
version: 1.0.0-alpha+8
description: Runtime support for Angel's ORM.
author: Tobe O <thosakwe@gmail.com>
homepage: https://github.com/angel-dart/orm
Expand Down
3 changes: 2 additions & 1 deletion angel_orm_generator/lib/angel_orm_generator.dart
@@ -1,3 +1,4 @@
export 'src/builder/orm/migration.dart';
export 'src/builder/orm/postgres.dart';
export 'src/builder/orm/service.dart';
export 'src/builder/orm/service.dart';
export 'src/builder/orm/sql_migration.dart';
10 changes: 10 additions & 0 deletions angel_orm_generator/lib/src/builder/orm/build_context.dart
Expand Up @@ -142,6 +142,16 @@ Future<PostgresBuildContext> buildContext(
);
}

if (column != null) {
column = new Column(
nullable: column.nullable,
length: column.length,
index: column.index,
defaultValue: column.defaultValue,
type: inferColumnType(field.type),
);
}

if (column?.type == null)
throw 'Cannot infer SQL column type for field "${field.name}" with type "${field.type.name}".';
ctx.columnInfo[field.name] = column;
Expand Down

0 comments on commit 97989a6

Please sign in to comment.