• 16 f191387e99

    16
    release / Publish KMP libraries → caffeine Nexus (release) Successful in 1m18s
    Stable

    subochev released this 2026-09-23 12:59:58 +00:00 | 4 commits to main since this release

    ksqlite 0.1.2 → 0.1.3

    Поднята зависимость pw.binom.db:ksqlite с 0.1.2 до 0.1.3 в шести модулях
    (:vector-index-ksqlite, :journal-ksqlite, :context-ksqlite,
    :reflection-ksqlite, :standalone, :memory-md-vector).

    В Maven Central опубликованы POM, Gradle Module Metadata и JAR — резолв
    pw.binom.db:ksqlite-jvm:0.1.3 подтверждён через ./gradlew :journal-ksqlite:dependencies.

    Расширение контракта :journal-api

    В интерфейс JournalStore добавлены два метода:

    • suspend fun count(conversationId: String): Long — total число сообщений в диалоге
    • suspend fun count(conversationId: String, after: Instant): Long — строго createdAt > after

    Реализации:

    • :journal-ksqlite — pre-prepared SELECT COUNT(*) statement'ы, O(1) SQL
    • :journal-inmemory — O(N) под Mutex

    HTTP-фасад :server

    Новые endpoint'ы в journalRoutes:

    • GET /conversations/{id}/count — total
    • GET /conversations/{id}/count?after= — count after cursor

    Один endpoint с опциональным параметром after (симметрично существующему messages).
    Тело ответа — JSON {"count": <Long>} через @Serializable CountResponse.

    HTTP-клиент :client

    HttpJournalStore.count / HttpJournalStore.count(after) реализованы через новые endpoint'ы.

    Тесты

    • server/JournalRoutesCountTest — 5 кейсов через embedded CIO + реальный InMemoryJournalStore:
      total, after-cursor, unknown-conv (0), JSON shape, cross-conv isolation
    • BearerTokenTest inline-stub дополнен count методами

    Build

    • ./gradlew jvmTest: 425/0/0 ✅
    • ./gradlew :standalone:shadowJar: ✅ (245M fatjar)
    • :server:jvmTest 10/0, :standalone:jvmTest 129/0, :journal-ksqlite:jvmTest 25/0,
      :journal-inmemory:jvmTest 19/0

    Коммит: f191387

    Downloads