quds_db_interface 0.0.5
quds_db_interface: ^0.0.5 copied to clipboard
A unified SQL database interface package that simplifies creating databases and tables, CRUD operations, and queries with modelization across various SQL engines.
example/quds_db_interface_example.dart
import 'package:quds_db_interface/quds_db_interface.dart';
// 1. Define your data model
class User extends DbModel {
final name = StringField(columnName: 'name', notNull: true);
final email = StringField(columnName: 'email', isUnique: true);
final age = IntField(columnName: 'age');
final isPremium = BoolField(columnName: 'is_premium', defaultValue: false);
@override
List<FieldDefinition>? getFields() => [name, email, age, isPremium];
}
// 2. Mock a TableProvider (In a real app, an adapter like quds_db_sqlite would provide this)
abstract class UsersProvider extends TableProvider<User> {
@override
String get tableName => 'Users';
}
void main() async {
// Create a new model instance
final newUser = User();
newUser.name.value = 'Alice';
newUser.email.value = 'alice@example.com';
newUser.age.value = 28;
print('New user model created:');
print('Name: ${newUser.name.value}');
print('Age: ${newUser.age.value}');
print('Premium Status: ${newUser.isPremium.value}'); // defaults to false
// In a real implementation with an adapter, you would do:
//
// final usersProvider = SqliteUsersProvider();
// await usersProvider.insertEntry(newUser);
//
// var users = await usersProvider.select(
// where: (u) => u.age.greaterThan(20).and(u.isPremium.equals(true)),
// order: (u) => [u.name.ascOrder],
// );
}