appwrite_database_wrapper 0.0.1 appwrite_database_wrapper: ^0.0.1 copied to clipboard
Simple wrapper for Appwrite Databases to write and read data from Appwrite Databases faster and easier.
Appwrite Database Wrapper #
A Dart package that provides a simple interface for interacting with Appwrite databases. It includes models and abstractions for facilitated integration and manipulation of Appwrite collections.
Features #
- AppwriteDatabaseModel: Represents an entity stored in an Appwrite database.
- AppwriteDatabaseWrapper: Abstract class providing the foundation for database operations.
- CollectionHandler: Manages interactions with Appwrite database collections using CRUD methods.
Installation #
To use this package, add the following to your pubspec.yaml
:
dependencies:
appwrite_database_wrapper: <latest_version>
Usage #
Initializing the Appwrite Client Before using the database wrappers, initialize the Appwrite client as shown:
await dotenv.load(fileName: ".env");
final client = Client();
client
.setEndpoint(dotenv.env['APPWRITE_ENDPOINT']!)
.setProject(dotenv.env['APPWRITE_PROJECT_ID']!)
.setSelfSigned(status: true);
final database = Databases(client);
//Creating a Database Wrapper
//Define your own database handler that extends AppwriteDatabaseWrapper and configure your collections:
class DB extends AppwriteDatabaseWrapper {
late final CollectionHandler users;
// Define other collections...
DB(super.databaseId, super.database) {
users = CollectionHandler(
databaseId: databaseId,
collectionId: dotenv.env['APPWRITE_COLLECTION_USERS_ID']!,
database: database,
);
// Initialize other collections...
}
}
Example Application #
Here's a minimal example of how to integrate and use these with a Flutter application:
void main() async {
await dotenv.load(fileName: ".env");
final client = Client();
client
.setEndpoint(dotenv.env['APPWRITE_ENDPOINT']!)
.setProject(dotenv.env['APPWRITE_PROJECT_ID']!)
.setSelfSigned(status: true);
final database = Databases(client);
final db = DB(dotenv.env['APPWRITE_DATABASE_ID']!, database);
runApp(MainApp(db: db));
}
class MainApp extends StatefulWidget {
final DB db;
const MainApp({super.key, required this.db});
@override
State<MainApp> createState() => _MainAppState();
}
class _MainAppState extends State<MainApp> {
@override
initState() {
super.initState();
_getListsDocs();
}
Future<List<User>> _getListsDocs() async {
final result =
await widget.db.users.listDocuments(queries: [Query.limit(1)]);
return result.documents
.map((doc) => User(
name: doc.data['name'],
email: doc.data['email'],
password: doc.data['password']))
.toList();
}
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: Text('Hello World!'),
),
),
);
}
}
Getting Started #
Load environment variables if necessary, and initialize the Appwrite client.
Extend AppwriteDatabaseWrapper to implement your database logic.
Use CollectionHandler to manage collections within your database.
Contributing #
Contributions are welcome! Please submit a pull request or raise issues if you find bugs.
License #
MIT License
Authors #
Ryszard Schossler (LynxLynxx)