RelaxORM Generator
Code generator for relax_orm. Generates TableSchema definitions from annotated Dart classes.
Setup
dependencies:
relax_orm: ^0.1.0
dev_dependencies:
relax_orm_generator: ^0.1.0
build_runner: ^2.4.0
Usage
Annotate your model classes with @RelaxTable():
import 'package:relax_orm/relax_orm.dart';
part 'user.g.dart';
@RelaxTable()
class User {
@PrimaryKey()
final String id;
final String name;
final int age;
final DateTime createdAt;
User({required this.id, required this.name, required this.age, required this.createdAt});
}
Run the generator:
dart run build_runner build
This generates user.g.dart:
final userSchema = TableSchema<User>(
tableName: 'users',
columns: [
ColumnDef.text('id', isPrimaryKey: true),
ColumnDef.text('name'),
ColumnDef.integer('age'),
ColumnDef.dateTime('created_at'),
],
fromMap: (map) => User(
id: map['id'] as String,
name: map['name'] as String,
age: map['age'] as int,
createdAt: map['created_at'] as DateTime,
),
toMap: (entity) => {
'id': entity.id,
'name': entity.name,
'age': entity.age,
'created_at': entity.createdAt,
},
);
Annotations
| Annotation | Effect |
|---|---|
@RelaxTable() |
Generates a schema for the class |
@RelaxTable(name: 'custom') |
Custom table name |
@PrimaryKey() |
Marks the primary key |
@Column(name: 'col') |
Custom column name |
@Ignore() |
Excludes a field |
Naming conventions
- Table names:
User->users,BlogPost->blog_posts - Column names:
createdAt->created_at,firstName->first_name
Override with @RelaxTable(name: ...) or @Column(name: ...).
Supported types
String, int, double, bool, DateTime, Uint8List (and nullable variants).
License
MIT