Skip to main content

Data Model

getById​

Future<ModelFindResponse> app.models.getById({required String modelName, required String recordId})

Get a single record by ID.

Parameters

modelName
String

Data model identifier

recordId
String

Record ID

Response

Future
ModelFindResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>?

Filter, format: {'where': {'_id': {'\$eq': 'foobar'}}}

select
Map<String, dynamic>?

Field selection, format: {'\$master': true} or {'field': true}

Response

Future
ModelFindResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>?

Filter condition, format: {'where': {'field': {'\$eq': 'value'}}}

select
Map<String, dynamic>?

Field selection, format: {'\$master': true} or {'field': true}

pageSize
int?

Page size, default 10

pageNumber
int?

Page number, default 1

getCount
bool?

Whether to return total count

orderBy
List<Map<String, String>>?

Sorting, up to 3 fields, format: [{'field': 'desc'}]

Response

Future
ModelFindManyResponse

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

modelName
String

Data model identifier

pageSize
int?

Page size

pageNumber
int?

Page number, default 1

getCount
bool?

Whether to return total count, default false

Response

Future
ModelFindManyResponse

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

modelName
String

Data model identifier

data
Map<String, dynamic>

Record data

Response

Future
ModelCreateResponse

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

modelName
String

Data model identifier

data
List<Map<String, dynamic>>

List of records to create

Response

Future
ModelCreateManyResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

data
Map<String, dynamic>

Data to update

Response

Future
ModelUpdateDeleteResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

data
Map<String, dynamic>

Data to update

Response

Future
ModelUpdateDeleteManyResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

create
Map<String, dynamic>?

Data to create when record does not exist

update
Map<String, dynamic>?

Data to update when record already exists

Response

Future
ModelUpsertResponse

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

modelName
String

Data model identifier

recordId
String

Record ID

Response

Future
ModelUpdateDeleteResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

Response

Future
ModelUpdateDeleteResponse

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

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

Response

Future
ModelUpdateDeleteManyResponse

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

sqlTemplate
String

SQL statement, supports parameter placeholders {{ var }}

parameter
List<ModelMysqlParameter>?

SQL parameter list

config
ModelMysqlConfig?

Execution config (timeout, preparedStatements, dbLinkName)

Response

Future
ModelMysqlCommandResponse

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}');
}