spring:
  application:
    name: editor-backend

  datasource:
    # H2 im File-Modus. Bewusst OHNE MODE=PostgreSQL, obwohl das naheliegt:
    # In dem Modus legt H2 unquotierte Bezeichner klein an, Liquibase sucht
    # seine Verwaltungstabellen aber gross - findet nichts, legt sie an, und H2
    # antwortet "Table databasechangelog already exists". Folge: Der erste
    # Start geht, JEDER WEITERE stuerzt ab. Gemessen und in D77 begruendet;
    # der Umstieg auf echtes PostgreSQL bleibt eine Frage von URL und Treiber.
    url: jdbc:h2:file:${werkbaum.data-dir:./data}/editor;DEFAULT_NULL_ORDERING=HIGH
    username: sa
    password: ""
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: validate   # Schema kommt ausschliesslich von Liquibase
    open-in-view: false

  liquibase:
    change-log: classpath:db/changelog/db.changelog-master.sql

  threads:
    virtual:
      # Der Aenderungsfeed blockiert seinen Thread, bis sich etwas tut
      # (Long Polling). Auf einem virtuellen Thread kostet das Warten fast
      # nichts - ein Plattform-Thread je Beobachter waere ein Megabyte Stack
      # auf einem Host, dessen knappe Groesse der Speicher ist (D76).
      enabled: true

werkbaum:
  live-editing:
    # Schreibpause, nach der die letzte Version zum Meilenstein wird.
    milestone-pause: 30s
    # Danach wird eine Sync-Version verdichtet; der Feed antwortet auf ein so
    # altes "since" dann mit Volltext statt mit einem Diff.
    sync-retention: 1h
    # Obergrenze fuers Warten am Feed. Gemessen: Apache auf der Zielumgebung
    # haelt einen Long-Poll 30 s durch, seine Zeitgrenzen liegen bei 300 s.
    max-wait: 25s

  # Von welchen Herkuenften darf der Editor die API ansprechen? "*" ist die
  # Voreinstellung: Zugriff regelt die unerratbare UUID, nicht die Herkunft,
  # und Cookies werden nie mitgesendet. Enger geht ueber eine Liste.
  cors:
    allowed-origins: "*"

  # Schutz der Dokumentenliste. BCrypt-Hash, NIE im Repository - er kommt aus
  # der Umgebung. Ohne ihn bleibt GET /documents gesperrt.
  master-password:
    hash: ${WERKBAUM_MASTER_PASSWORD_HASH:}
    max-attempts: 5
    lockout: 15m

server:
  port: 8080
