// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'package:api/src/core/database/database.dart';
import 'package:api/src/data/model/order.dart';

import './order_repository.dart';

class OrderRepoistoryImpl implements OrderRepository {
  final Database _database;
  OrderRepoistoryImpl({
    required Database database,
  }) : _database = database;

  @override
  Future<List<Order>?> getAll() async {
    final data = await _database.getData("Select * from orders");
    if (data != null) {
      return data.map<Order>((o) => Order.fromMap(o)).toList();
    }
    return null;
  }

  @override
  Future<Order?> getById(int id) async {
    final data = await _database.getUnique("Select * from orders where id = $id");
    if (data != null) {
      return Order.fromMap(data);
    }
    return null;
  }

  @override
  Future<int?> save(Order order) async {
    final data = await _database.insert(
      tableName: 'orders',
      value: order.toDatabase(),
    );
    if (data != 0) {
      return data;
    }
    return null;
  }

  @override
  Future<bool> delete(int id) async {
    final deleted = await _database.delete(
      tableName: 'orders',
      value: {'id': id},
    );
    return deleted;
  }

  @override
  Future<bool> update(int id, Order order) async {
    final updated = await _database.update(tableName: 'orders', value: order.toDatabase());
    return updated;
  }
}