assert node.has_bundle('docker-engine')

defaults = {
    'apt': {
        'packages': {
            'python3-psycopg2': {},
        },
    },
    'docker-engine': {
        'containers': {
            'immich': {
                'image': 'ghcr.io/imagegenius/immich:latest',
                'environment': {
                    'DB_DATABASE_NAME': 'immich',
                    'DB_HOSTNAME': 'immich-postgresql',
                    'DB_PASSWORD': repo.vault.password_for(f'{node.name} postgresql immich'),
                    'DB_USERNAME': 'immich',
                    'REDIS_HOSTNAME': 'immich-redis',
                },
                'volumes': {
                    'config': '/config',
                    'libraries': '/libraries',
                    'photos': '/photos',
                },
                'ports': {
                    '8080': '8080',
                },
                'needs': {
                    'svc_systemd:docker-immich-postgresql',
                    'svc_systemd:docker-immich-redis',
                },
                'requires': {
                    'docker-immich-postgresql.service',
                    'docker-immich-redis.service',
                },
            },
            'immich-postgresql': {
                'image': 'tensorchord/pgvecto-rs:pg14-v0.2.0',
                'environment': {
                    'POSTGRES_PASSWORD': repo.vault.password_for(f'{node.name} postgresql immich'),
                    'POSTGRES_USER': 'immich',
                    'POSTGRES_DB': 'immich',
                },
                'volumes': {
                    'database': '/var/lib/postgresql/data',
                },
            },
            'immich-redis': {
                'image': 'docker.io/redis:6.2-alpine',
            },
        },
    },
    'docker-immich': {
        'enable_auto_album_share': False,
    },
    'nginx': {
        'vhosts': {
            'immich': {
                'locations': {
                    '/': {
                        'target': 'http://127.0.0.1:8080/',
                        'websockets': True,
                        'max_body_size': '5000m',
                    },
                },
            },
        },
    },
}


@metadata_reactor.provides(
    'systemd-timers/timers/immich-auto-album-share',
)
def auto_album_share(metadata):
    if not metadata.get('docker-immich/enable_auto_album_share'):
        return {}

    return {
        'systemd-timers': {
            'timers': {
                'immich-auto-album-share': {
                    'command': '/usr/local/bin/immich-auto-album-share.py',
                    'environment': metadata.get('docker-engine/containers/immich/environment'),
                    'when': 'minutely',
                },
            },
        },
    }