flutter_orm_m8 0.5.0 copy "flutter_orm_m8: ^0.5.0" to clipboard
flutter_orm_m8: ^0.5.0 copied to clipboard

outdated

Flutter package for ORM annotations. It defines ColumnMetadata, TableMetadata, DataTable, DataColumn annotations. The main purpose is to be used by code generators to expand annotated models.

Flutter ORM Mate - flutter_orm_m8 #

Gitter GitHub release pub package Build Status license

Flutter package for ORM annotations.

Introduction #

The package adds definitions for a set of types that could be combined to expand ORM capabilities in the annotated code. The current version, defines four annotation types:

  • DataTable
  • DataColumn
  • TableMetadata
  • ColumnMetadata

In order to ease the code emitting four abstract classes are defined:

  • DbOpenEntity
  • DbEntity
  • DbAccountEntity implements DbEntity
  • DbAccountRelatedEntity implements DbEntity

Annotations #

DataTable #

DataTable describes the required name for the table in conjuction with a bit mask for optional TableMetadata

@DataTable("a01_tests")
class A01Test implements DbAccountRelatedEntity {

DataColumn #

DataColumn describes the required name for the column in conjunction with a bit mask for required ColumnMetadata's

  @DataColumn("id", ColumnMetadata.PrimaryKey | ColumnMetadata.Unique | ColumnMetadata.AutoIncrement)
  int id;

TableMetadata #

The TableMetadata describes the basic options for the table:

  • SoftDeletable
  • TrackCreate
  • TrackUpdate

The options may be combined in various ways using | operator

@DataTable(
    "health_issues",
        TableMetadata.SoftDeletable |
        TableMetadata.TrackCreate |
        TableMetadata.TrackUpdate)

ColumnMetadata #

The ColumnMetadata describes the basic options for a column definition:

  • Ignore
  • PrimaryKey
  • Unique
  • NotNull
  • AutoIncrement
  • Indexed

The options may be combined in various ways using | operator

@DataColumn("id", ColumnMetadata.PrimaryKey | ColumnMetadata.Unique | ColumnMetadata.AutoIncrement)

Interfaces #

DbOpenEntity #

DbOpenEntity is as it's name suggest a template for non restrictive models with composite primary keys. Also it may be used for non integer primary key implementation.
It defines a single method getPrimaryKey

DbEntity #

May be used for a general purpose model template with integer primary key named id

DbAccountEntity #

It implements DbEntity. May be used for a model template in a generic user account with the following fields:

  • userName
  • email
  • abbreviation

DbAccountRelatedEntity implements DbEntity #

It implements DbEntity. May be used for a model template in a generic, account dependent, entity with the following fields:

  • accountId

Usage #

The package can be a start for other projects that aim to develop an ORM. Such project is https://github.com/matei-tm/flutter-sqlite-m8-generator

@DataTable("a01_tests", TableMetadata.SoftDeletable)
class A01Test implements DbAccountRelatedEntity {
  @DataColumn("id", ColumnMetadata.PrimaryKey | ColumnMetadata.Unique | ColumnMetadata.AutoIncrement)
  int id;

  @DataColumn("account_id")
  int accountId;

  @DataColumn("record_date")
  int recordDate;
}
0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Flutter package for ORM annotations. It defines ColumnMetadata, TableMetadata, DataTable, DataColumn annotations. The main purpose is to be used by code generators to expand annotated models.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

More

Packages that depend on flutter_orm_m8