DatabaseTable class

Annotation for marking a Dart class as a database table.

This annotation is applied to Dart classes to indicate that they should be converted to PostgreSQL/Supabase database tables. It provides extensive configuration options for customizing the generated table.

Basic Usage:

@DatabaseTable()
class User {
  String? id;
  String email;
  DateTime? createdAt;
}

Advanced Usage:

@DatabaseTable(
  name: 'app_users',
  schema: 'auth',
  enableRLS: true,
  comment: 'Application users with authentication data',
  addTimestamps: true,
  policies: [
    RLSPolicy.authenticatedRead(),
    RLSPolicy.ownerWrite('user_id'),
  ],
)
class User { ... }
Annotations
  • @immutable

Constructors

DatabaseTable.new({String? name, String schema = 'public', bool enableRLS = true, String? comment, bool addTimestamps = true, List<RLSPolicy> policies = const [], List<DatabaseIndex> indexes = const [], List<TableConstraint> constraints = const [], String? tablespace, bool withOids = false, String? inheritFrom, PartitionStrategy? partitionBy, List<Validator> validationRules = const []})
Creates a database table annotation with the specified configuration.
const

Properties

addTimestamps bool
Whether to automatically add created_at and updated_at timestamp columns.
final
comment String?
Optional comment for the table.
final
constraints List<TableConstraint>
List of table-level constraints.
final
enableRLS bool
Whether to enable Row Level Security (RLS) on this table.
final
hashCode int
The hash code for this object.
no setterinherited
indexes List<DatabaseIndex>
List of indexes to create for this table.
final
inheritFrom String?
Parent table to inherit from.
final
name String?
The table name in the database.
final
partitionBy PartitionStrategy?
Partitioning strategy for the table.
final
policies List<RLSPolicy>
List of RLS policies to apply to this table.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
schema String
The database schema name.
final
tablespace String?
Custom tablespace for the table.
final
validationRules List<Validator>
Custom validation rules for the table.
final
withOids bool
Whether to create the table with OIDs.
final

Methods

getEffectiveName(String className) String
Gets the effective table name (either specified name or generated from class name).
getFullyQualifiedName(String className) String
Gets the fully qualified table name (schema.table).
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
Returns a string representation of this table configuration.
override
validate() List<String>
Validates the table configuration.

Operators

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