from django.urls import path, include
from rest_framework import routers
from account.views import (
    LoginView,
    ChangePasswordView,
    PasswordResetView,
    UserProfileView,
    RegisterView,
    VerifyOTPView,
    UserViewSet,
)
from account.backup import backup_database, restore_database, list_backups, delete_backup, download_backup
from knox import views as knox_views


class OptionalSlashRouter(routers.SimpleRouter):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.trailing_slash = '/?'


router = OptionalSlashRouter()
router.register(r'users', UserViewSet, basename='user')

urlpatterns = [
    path("", include(router.urls)),
    path("login/", LoginView.as_view(), name="login"),
    path("logout/", knox_views.LogoutView.as_view(), name="logout"),
    path("logoutall/", knox_views.LogoutAllView.as_view(), name="logoutall"),
    path("change-password/", ChangePasswordView.as_view(), name="change-password"),
    path("password-reset/", PasswordResetView.as_view(), name="password-reset"),
    path("profile/", UserProfileView.as_view(), name="user-profile"),
    path("register/", RegisterView.as_view(), name="register"),
    path("verify-otp/", VerifyOTPView.as_view(), name="verify-otp"),
    path("backups/create/", backup_database, name="backup_database"),
    path("backups/restore/", restore_database, name="restore_database"),
    path("backups/list/", list_backups, name="list_backups"),
    path("backups/delete/", delete_backup, name="delete_backup"),
    path("backups/download/", download_backup, name="download_backup"),
]
