Database Manager

A Flutter/Dart package for managing SQLite database configuration using model-based definitions.

Features

  • Configure SQLite database name and version
  • Create database tables using models
  • Update database structure using models
  • Delete database structures using models
  • Define database field types through models
  • Simple database initialization

Installation

Add the package to your pubspec.yaml:

dependencies:
  rfdb: ^1.0.0

Then run:

flutter pub get

Usage

1. Create a Database Model

Create a model class and define the fields that should be stored in the database.

For example, a Meeting model:

class Meeting {
  String? meetingId;
  String? meetingDateTime;
  int? participant;

  Meeting();

  @override
  String toString() {
    return 'Meeting{'
        'meetingId: $meetingId, '
        'meetingDateTime: $meetingDateTime, '
        'participant: $participant'
        '}';
  }

  Map<String, String> getDataTypeMap() {
    return {
      'meetingId': 'String',
      'meetingDateTime': 'String',
      'participant': 'int',
    };
  }
}

The getDataTypeMap() method defines the database field names and their data types.

2. Configure the Database

Configure the database using DatabaseHelper:

late DatabaseManager databaseManager;

class DatabaseConfig {
  static void configDatabase() {
    DatabaseHelper.databaseName = "test.db";

    DatabaseHelper.databaseVersion = 1;

    // Models used for creating database tables
    DatabaseHelper.dbCreateModels = [
      Meeting(),
    ];

    // Models used for updating database structure
    DatabaseHelper.dbUpdateModels = [];

    // Models used for deleting database structures
    DatabaseHelper.dbDeleteModels = [];

    DatabaseHelper.isAccurateFieldType = true;

    databaseManager = DatabaseManager();
  }
}

3. Initialize the Database

Initialize the database during application startup:

Future<void> initialSetup() async {
  DatabaseConfig.configDatabase();
}

Then call:

await initialSetup();

For example:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await initialSetup();

  runApp(const MyApp());
}

Model Field Types

The getDataTypeMap() method defines the database field types.

For example:

Map<String, String> getDataTypeMap() {
  return {
    'meetingId': 'String',
    'meetingDateTime': 'String',
    'participant': 'int',
  };
}

This represents:

Field Type
meetingId String
meetingDateTime String
participant int

You can create additional models following the same pattern.

Example

A complete working example is available in the package's example directory.

The example demonstrates:

  1. Creating a Meeting model
  2. Configuring the database
  3. Registering the model for database creation
  4. Initializing the database

Changelog

See CHANGELOG.md for release history.

License

This package is licensed under the MIT License.