# SPDX-FileCopyrightText: 2024 Ryan Lahfa <ryan.lahfa@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2

{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  poetry-core,
  aiosqlite,
  iso8601,
  callPackage,
  pytz,
  ciso8601,
  orjson,
  uvloop,
  aiomysql,
  asyncmy,
  asyncpg,
  psycopg,
  pydantic,
  pythonRelaxDepsHook,
}:

buildPythonPackage rec {
  pname = "tortoise-orm";
  version = "0.21.6";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "tortoise";
    repo = "tortoise-orm";
    rev = version;
    hash = "sha256-Gu7MSJbPjaGUN6tmHwkmx7Bdy/+V1wZjmTCQrTDDPkw=";
  };

  buildInputs = [ pythonRelaxDepsHook ];

  pythonRelaxDeps = [
    "aiosqlite"
    "iso8601"
  ];

  build-system = [ poetry-core ];

  dependencies = [
    aiosqlite
    iso8601
    pydantic
    (callPackage ./pypika-tortoise.nix { })
    pytz
  ];

  optional-dependencies = {
    accel = [
      ciso8601
      orjson
      uvloop
    ];
    aiomysql = [ aiomysql ];
    asyncmy = [ asyncmy ];
    asyncpg = [ asyncpg ];
    psycopg = [ psycopg ];
  };

  pythonImportsCheck = [ "tortoise" ];

  meta = {
    description = "";
    homepage = "https://github.com/tortoise/tortoise-orm";
    changelog = "https://github.com/tortoise/tortoise-orm/blob/${src.rev}/CHANGELOG.rst";
    license = lib.licenses.asl20;
    maintainers = with lib.maintainers; [ raitobezarius ];
  };
}