This function will convert an appwrite.json file, from Appwrite Appwrite. To dart files with the models of the collections in the appwrite.json.
It will iterates over every collection in that file an produce a new file with the same name as the collection. The output will be a dart file with the model of the collection.
Just put your appwrite.json file in the json folder and run the main.py function. You will get the dart files with the models in the dart folder.
Expected format (Just a normal appwrite.json file):
{
"projectId": "test",
"projectName": "TEST",
"collections": [
{
"$id": "countries",
"$createdAt": "2023-04-27T16:11:07.400446+00:00",
"$updatedAt": "2023-04-27T16:11:07.400446+00:00",
"$permissions": [],
"databaseId": "test_db",
"name": "COUNTRIES",
"enabled": true,
"attributes": [
{
"key": "id_country",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"default": null,
"min": -9223372036854775808,
"max": 9223372036854775807
},
{
"key": "name_country",
"type": "string",
"status": "available",
"required": true,
"array": false,
"default": null,
"size": 30
}
],
"indexes": [
{
"key": "IDX_COUNTRY_PK",
"type": "unique",
"status": "available",
"attributes": ["id_country"],
"orders": ["DESC"]
}
]
}
]
}import 'dart:convert';
class Countries {
int idCountry;
String nameCountry;
Countries({
required this.idCountry,
required this.nameCountry,
});
Countries copyWith({
int? idCountry,
String? nameCountry,
}) {
return Countries(
idCountry: idCountry ?? this.idCountry,
nameCountry: nameCountry ?? this.nameCountry,
);
}
Map<String, dynamic> toMap() {
return {
'id_country': idCountry,
'name_country': nameCountry,
};
}
factory Countries.fromMap(Map<String, dynamic> map) {
return Countries(
idCountry: map['id_country'],
nameCountry: map['name_country'],
);
}
String toJson() => json.encode(toMap());
factory Countries.fromJson(String source) => Countries.fromMap(json.decode(source));
@override
String toString() {
return 'Countries(idCountry: $idCountry, nameCountry: $nameCountry)';
}
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is Countries &&
other.idCountry == idCountry &&
other.nameCountry == nameCountry;
}
@override
int get hashCode {
return
idCountry.hashCode ^
nameCountry.hashCode;
}
}There is already an example inside the json folder. It's an appwrite.json file. Run the function and you will get the dart files in the dart folder.
- Read
appwrite.jsonfrom json folder - Generate separate dart files
- Support for
integerdatatype - Support for
stringdatatype - Support for
booleandatatype - Support for
datetimedatatype - Support for
doubledatatype - Create input parameters on main to specify the input file and output folders

