k8s_yaml(local('curl -sL https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.29.1/cnpg-1.29.1.yaml'))

k8s_resource(
    workload='cnpg-controller-manager',
    labels=['cnpg']
)

# Wait for webhook service to have endpoints
local_resource(
    'wait-cnpg-webhook',
    cmd='kubectl wait --for=jsonpath=.subsets[0].addresses[0].ip --timeout=60s endpoints/cnpg-webhook-service -n cnpg-system',
    resource_deps=['cnpg-controller-manager']
)

k8s_yaml('cloudnative-pg.yaml')

k8s_resource(
    objects=['immich-database:cluster'],
    new_name='immich-database-cluster',
    resource_deps=['wait-cnpg-webhook'],
    labels=['database']
)

k8s_yaml('cloudnative-pg-database.yaml')

k8s_resource(
    objects=['immich-database:database'],
    new_name='immich-database',
    resource_deps=['immich-database-cluster'],
    labels=['database']
)

local_resource(
    'wait-database-ready',
    cmd='kubectl wait --for=jsonpath=.status.applied=true --timeout=300s database/immich-database -n default',
    resource_deps=['immich-database'],
    labels=['database']
)

k8s_yaml('pvc.yaml')

k8s_yaml(helm(
    '../charts/immich',
    name='immich',
    namespace='default',
    values=['values.yaml']
))

k8s_resource(
    workload='immich-server',
    port_forwards=['2283:2283'],
    resource_deps=['wait-database-ready'],
    labels=['immich']
)

k8s_resource(
    workload='immich-machine-learning',
    resource_deps=['wait-database-ready'],
    labels=['immich']
)

k8s_resource(
    workload='immich-valkey',
    resource_deps=['wait-database-ready'],
    labels=['immich']
)
