import 'dart:convert';
import 'package:comwell_key_app/database/comwell_db.dart';
import 'package:comwell_key_app/database/tables/upsale_table.dart';
import 'package:comwell_key_app/up_sales/mappers/up_sales_mapper.dart';
import 'package:comwell_key_app/up_sales/models/dto/up_sales_dto.dart';
import 'package:comwell_key_app/up_sales/models/up_sales.dart';
import 'package:comwell_key_app/utils/json.dart';
import 'package:drift/drift.dart';
part '../../.generated/database/daos/upsales_dao.g.dart';
@DriftAccessor(tables: [UpsaleEntity])
class UpsalesDAO extends DatabaseAccessor<ComwellDatabase>
with _$UpsalesDAOMixin {
UpsalesDAO(super.attachedDatabase);
/// Get upsales by confirmation number
Future<UpSales> getUpsaleByConfirmationNumber(
String confirmationNumber) async {
final query = select(upsaleEntity)
..where((tbl) => tbl.id.equals(confirmationNumber));
final result = await query.getSingle();
final json = jsonDecode(result.json) as Json;
return UpSalesDTO.fromJson(json).toUpSales();
}
Future<void> insertUpsale(UpSalesDTO upsale) async {
final entity = UpsaleEntityCompanion.insert(
id: upsale.confirmationNumber,
json: jsonEncode(upsale.toJson()),
);
await batch((batch) =>
batch.insert(upsaleEntity, entity, mode: InsertMode.insertOrReplace));
}
}