appwrite_database_wrapper 0.0.1 copy "appwrite_database_wrapper: ^0.0.1" to clipboard
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)

0
likes
150
points
31
downloads

Publisher

verified publisherrsapps.org

Weekly Downloads

Simple wrapper for Appwrite Databases to write and read data from Appwrite Databases faster and easier.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

appwrite, flutter

More

Packages that depend on appwrite_database_wrapper