fooder-app/lib/storage/product.dart

53 lines
1.3 KiB
Dart
Raw Normal View History

2024-08-03 22:30:07 +02:00
import 'dart:async';
import 'package:sqflite/sqflite.dart';
import 'package:fooder/models/product.dart';
class ProductStorage {
Database db;
ProductStorage({required this.db});
static Future<void> createTable(Database db, int version) async {
await db.execute('''
CREATE TABLE product(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
barcode TEXT,
calories NOT NULL,
protein REAL NOT NULL,
carb REAL NOT NULL,
fat REAL NOT NULL,
fiber REAL NOT NULL
)
''');
}
Future<List<Product>> list() async {
var result = await db.query('product');
return result.map((e) => Product.fromJson(e)).toList();
}
Future<Product?> get(int id) async {
var result = await db.query('product', where: 'id = ?', whereArgs: [id]);
if (result.isEmpty) {
return null;
}
return Product.fromJson(result.first);
}
Future<void> insert(Product product) async {
await db.insert('product', product.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace);
}
Future<void> bulkInsert(List<Product> products) async {
var batch = db.batch();
for (var product in products) {
batch.insert('product', product.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace);
}
await batch.commit(noResult: true);
}
}