"""Django admin configuration for GitHub integration."""

from django.contrib import admin

from integrations.models.github import GitHubInstallation, GitHubRepository


@admin.register(GitHubInstallation)
class GitHubInstallationAdmin(admin.ModelAdmin):
    """Admin for GitHub App installations."""

    list_display = [
        "account_login",
        "account_type",
        "workspace",
        "is_suspended",
        "created_at",
    ]
    list_filter = ["account_type", "suspended_at"]
    search_fields = ["account_login", "workspace__name"]
    readonly_fields = [
        "installation_id",
        "account_id",
        "created_at",
        "updated_at",
        "token_expires_at",
    ]

    fieldsets = [
        (None, {"fields": ["workspace", "account_login", "account_type", "account_avatar_url"]}),
        ("GitHub IDs", {"fields": ["installation_id", "account_id"]}),
        ("Status", {"fields": ["suspended_at", "permissions"]}),
        ("Token", {"fields": ["token_expires_at"]}),
        ("Timestamps", {"fields": ["created_at", "updated_at"]}),
    ]


@admin.register(GitHubRepository)
class GitHubRepositoryAdmin(admin.ModelAdmin):
    """Admin for GitHub repositories."""

    list_display = [
        "full_name",
        "sync_status",
        "private",
        "is_archived",
        "last_sync_at",
    ]
    list_filter = ["sync_status", "private", "is_archived", "installation"]
    search_fields = ["full_name", "owner", "name"]
    readonly_fields = [
        "repo_id",
        "created_at",
        "updated_at",
        "last_sync_at",
        "html_url",
    ]

    fieldsets = [
        (None, {"fields": ["installation", "source", "full_name", "html_url"]}),
        ("Repository Info", {"fields": ["owner", "name", "repo_id", "private"]}),
        ("Sync Status", {"fields": ["sync_status", "last_sync_at", "last_sync_error", "sync_cursors"]}),
        ("Archival", {"fields": ["is_archived"]}),
        ("Timestamps", {"fields": ["created_at", "updated_at"]}),
    ]
