Model class abstract

Abstract base class for all data models.

Provides:

  • Common fields: id, uuid, createdAt, updatedAt
  • Unified CRUD API across backends
  • JSON serialization
  • Disk-agnostic static methods

Usage:

class User extends Model {
  String name;
  String email;

  User({this.name, this.email});

  @override
  Map<String, dynamic> toJson() => {
    'name': name,
    'email': email,
  };

  @override
  Map<String, dynamic> toMetaJson() => {
    'id': id,
    'uuid': uuid,
    'created_at': createdAt?.toIso8601String(),
    'updated_at': updatedAt?.toIso8601String(),
  };
}
Implementers

Constructors

Model.fromJson(Map<String, dynamic> json)
Constructs model from JSON.

Properties

createdAt DateTime?
Creation timestamp (UTC).
getter/setter pair
disk Disk
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
id int?
Primary key (auto-incremented by backend).
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
updatedAt DateTime?
Last update timestamp (UTC).
getter/setter pair
uuid String?
UUID for cross-backend identification.
getter/setter pair

Methods

delete({Disk disk = Model.defaultDisk}) Future<bool>
Deletes the current instance.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
save({Disk disk = Model.defaultDisk}) Future<bool>
Saves the current instance.
toJson() Map<String, dynamic>
Serializes model data (excluding metadata).
toMetaJson() Map<String, dynamic>
Serializes metadata fields (id, uuid, timestamps).
toString() String
Human-readable string representation.
override
update({Disk disk = Model.defaultDisk}) Future<bool>
Updates the current instance with new data.

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

all<T extends Model>({Disk disk = Model.defaultDisk}) Future<List<T>>
Returns all instances of type T.
count<T extends Model>({Disk disk = Model.defaultDisk}) Future<int>
Counts total instances of type T.
create<T extends Model>({required Map<String, dynamic> fromJson, Disk disk = Model.defaultDisk}) Future<T?>
Creates a new record from fromJson.
deleteInstance<T extends Model>({required T instance, Disk disk = Model.defaultDisk}) Future<bool>
Deletes an instance by UUID.
destroy<T extends Model>({required dynamic id, Disk disk = Model.defaultDisk}) Future<bool>
Deletes a record by id.
exists<T extends Model>({required dynamic id, Disk disk = Model.defaultDisk}) Future<bool>
Checks if a record with id exists.
find<T extends Model>({required dynamic id, Disk disk = Model.defaultDisk}) Future<T?>
Finds a record by id (UUID or primary key).
findBy<T extends Model>({required String field, required dynamic value, Disk disk = Model.defaultDisk}) Future<T?>
Finds first record where field matches value.
firstWhere<T extends Model>({required String field, required dynamic value, String comp = "==", Disk disk = Model.defaultDisk}) Future<T?>
Returns first record matching where() condition.
index<T extends Model>({Disk disk = Model.defaultDisk}) Future<List<T>>
Retrieves all instances of type T.
patch<T extends Model>({required dynamic id, required String field, required dynamic value, Disk disk = Disk.file}) Future<bool>
Updates a single field of a record by id.
saveInstance<T extends Model>({required T instance, Disk disk = Model.defaultDisk}) Future<bool>
Saves an instance to the specified disk.
store<T extends Model>({required T instance, Disk disk = Model.defaultDisk}) Future<bool>
Alias for saveInstance.
truncate<T extends Model>({Disk disk = Model.defaultDisk}) Future<bool>
Deletes all records of type T.
updateInstance<T extends Model>({required T instance, required Map<String, dynamic> withJson, Disk disk = Disk.file}) Future<bool>
Updates an instance with withJson data.
where<T extends Model>({required String field, required dynamic value, String comp = "==", Disk disk = Disk.file}) Future<List<T>>
Filters records where field comp value.

Constants

defaultDisk → const Disk
Default storage backend for all models. can be overridden per-class Can be overridden per-operation.