Data Model
getById
Future<ModelFindResponse> app.models.getById({required String modelName, required String recordId})
Get a single record by ID.
Parameters
Data model identifier
Record ID
Response
Example
- Example
final result = await app.models.getById(
modelName: 'user',
recordId: '123',
);
if (result.isSuccess) {
print('Record: ${result.record}');
} else {
print('Query failed: ${result.message}');
}
get
Future<ModelFindResponse> app.models.get({required String modelName, Map<String, dynamic>? filter, Map<String, dynamic>? select})
Get a single record by condition.
Parameters
Data model identifier
Filter, format: {'where': {'_id': {'\$eq': 'foobar'}}}
Field selection, format: {'\$master': true} or {'field': true}
Response
Example
- Example
final result = await app.models.get(
modelName: 'user',
filter: {'where': {'_id': {'\$eq': '123'}}},
select: {'\$master': true},
);
if (result.isSuccess) {
print('Record: ${result.record}');
} else {
print('Query failed: ${result.message}');
}
list
Future<ModelFindManyResponse> app.models.list({
required String modelName,
Map<String, dynamic>? filter,
Map<String, dynamic>? select,
int? pageSize,
int? pageNumber,
bool? getCount,
List<Map<String, String>>? orderBy,
})
Query multiple records. Supports filter conditions, field selection, pagination, and sorting.
Parameters
Data model identifier
Filter condition, format: {'where': {'field': {'\$eq': 'value'}}}
Field selection, format: {'\$master': true} or {'field': true}
Page size, default 10
Page number, default 1
Whether to return total count
Sorting, up to 3 fields, format: [{'field': 'desc'}]
Response
Example
- Example
final result = await app.models.list(
modelName: 'user',
pageSize: 10,
pageNumber: 1,
getCount: true,
orderBy: [{'createdAt': 'desc'}],
filter: {'where': {'age': {'\$gt': 18}}},
);
if (result.isSuccess) {
print('Total: ${result.total}');
for (final record in result.records) {
print('Record: $record');
}
}
listSimple
Future<ModelFindManyResponse> app.models.listSimple({required String modelName, int? pageSize, int? pageNumber, bool? getCount})
Simple query for multiple records (GET request, only supports pagination parameters).
Parameters
Data model identifier
Page size
Page number, default 1
Whether to return total count, default false
Response
Example
- Example
final result = await app.models.listSimple(
modelName: 'user',
pageSize: 10,
pageNumber: 1,
getCount: true,
);
if (result.isSuccess) {
print('Total: ${result.total}');
for (final record in result.records) {
print('Record: $record');
}
}
create
Future<ModelCreateResponse> app.models.create({required String modelName, required Map<String, dynamic> data})
Create a single record.
Parameters
Data model identifier
Record data
Response
Example
- Example
final result = await app.models.create(
modelName: 'user',
data: {'name': 'Zhang San', 'age': 25, 'email': 'test@example.com'},
);
if (result.isSuccess) {
print('Created successfully, ID: ${result.id}');
} else {
print('Creation failed: ${result.message}');
}
createMany
Future<ModelCreateManyResponse> app.models.createMany({required String modelName, required List<Map<String, dynamic>> data})
Batch create records.
Parameters
Data model identifier
List of records to create
Response
Example
- Example
final result = await app.models.createMany(
modelName: 'user',
data: [
{'name': 'Zhang San', 'age': 25},
{'name': 'Li Si', 'age': 30},
],
);
if (result.isSuccess) {
print('Batch creation successful, ID list: ${result.idList}');
}
update
Future<ModelUpdateDeleteResponse> app.models.update({required String modelName, required Map<String, dynamic> filter, required Map<String, dynamic> data})
Update a single record.
Parameters
Data model identifier
Filter condition
Data to update
Response
Example
- Example
final result = await app.models.update(
modelName: 'user',
filter: {'where': {'_id': {'\$eq': '123'}}},
data: {'age': 26},
);
if (result.isSuccess) {
print('Update successful, ${result.count} record(s) updated');
}
updateMany
Future<ModelUpdateDeleteManyResponse> app.models.updateMany({required String modelName, required Map<String, dynamic> filter, required Map<String, dynamic> data})
Batch update records.
Parameters
Data model identifier
Filter condition
Data to update
Response
Example
- Example
final result = await app.models.updateMany(
modelName: 'user',
filter: {'where': {'age': {'\$lt': 18}}},
data: {'status': 'minor'},
);
if (result.isSuccess) {
print('Batch update successful, ${result.count} record(s) updated');
}
upsert
Future<ModelUpsertResponse> app.models.upsert({required String modelName, required Map<String, dynamic> filter, Map<String, dynamic>? create, Map<String, dynamic>? update})
Create or update a single record (Upsert). If a matching record is found, it will be updated; otherwise, a new record will be created.
Parameters
Data model identifier
Filter condition
Data to create when record does not exist
Data to update when record already exists
Response
Example
- Example
final result = await app.models.upsert(
modelName: 'user',
filter: {'where': {'email': {'\$eq': 'test@example.com'}}},
create: {'name': 'Zhang San', 'email': 'test@example.com', 'age': 25},
update: {'age': 26},
);
if (result.isSuccess) {
print('Upsert successful, ${result.count} record(s) changed');
if (result.id != null) {
print('New record ID: ${result.id}');
}
}
deleteById
Future<ModelUpdateDeleteResponse> app.models.deleteById({required String modelName, required String recordId})
Delete a single record by ID.
Parameters
Data model identifier
Record ID
Response
Example
- Example
final result = await app.models.deleteById(
modelName: 'user',
recordId: '123',
);
if (result.isSuccess) {
print('Deletion successful, ${result.count} record(s) changed');
}
deleteRecord
Future<ModelUpdateDeleteResponse> app.models.deleteRecord({required String modelName, required Map<String, dynamic> filter})
Delete a single record by condition.
Parameters
Data model identifier
Filter condition
Response
Example
- Example
final result = await app.models.deleteRecord(
modelName: 'user',
filter: {'where': {'_id': {'\$eq': '123'}}},
);
if (result.isSuccess) {
print('Deletion successful, ${result.count} record(s) changed');
}
deleteMany
Future<ModelUpdateDeleteManyResponse> app.models.deleteMany({required String modelName, required Map<String, dynamic> filter})
Batch delete records.
Parameters
Data model identifier
Filter condition
Response
Example
- Example
final result = await app.models.deleteMany(
modelName: 'user',
filter: {'where': {'status': {'\$eq': 'inactive'}}},
);
if (result.isSuccess) {
print('Batch deletion successful, ${result.count} record(s) changed');
}
mysqlCommand
Future<ModelMysqlCommandResponse> app.models.mysqlCommand({required String sqlTemplate, List<ModelMysqlParameter>? parameter, ModelMysqlConfig? config})
Execute MySQL commands. Supports parameterized queries.
Parameters
SQL statement, supports parameter placeholders {{ var }}
SQL parameter list
Execution config (timeout, preparedStatements, dbLinkName)
Response
Example
- Example
final result = await app.models.mysqlCommand(
sqlTemplate: 'select * from `users` where _id = {{ _id }}',
parameter: [
ModelMysqlParameter(key: '_id', type: 'STRING', value: '123'),
],
);
if (result.isSuccess) {
print('Execution result: ${result.executeResultList}');
}