feat: HTTP server in main entry point + background compaction scheduling

- baradadb.nim now starts both TCP wire protocol and HTTP REST servers
- HTTP server runs in background thread via hunos on port TCP+440
- WebSocket server auto-starts on HTTP port + 1
- CompactionManager with background async loop (default 60s interval)
- CompactionStrategy wired to LSMTree SSTables
- Fixed forward declaration for lowerExpr in executor.nim
- 216 tests passing
This commit is contained in:
2026-05-06 14:23:13 +03:00
parent f135d8c61d
commit 856a07c030
4 changed files with 75 additions and 7 deletions
+5 -3
View File
@@ -7,6 +7,7 @@ import std/tables
import std/monotimes
import std/streams
import std/locks
import std/asyncdispatch
import bloom
import wal
import mmap
@@ -40,15 +41,15 @@ type
mmapFile*: MmapFile
LSMTree* = ref object
dir: string
dir*: string
memTable: MemTable
immutableMem: MemTable
sstables: seq[SSTable]
sstables*: seq[SSTable]
wal: WriteAheadLog
memMaxSize: int
currentSeq: uint64
nextSSTableId: int
lock: Lock
lock*: Lock
proc newMemTable(maxSize: int = DefaultMemTableSize): MemTable =
MemTable(entries: @[], size: 0, maxSize: maxSize)
@@ -323,6 +324,7 @@ proc newLSMTree*(dir: string, memMaxSize: int = DefaultMemTableSize): LSMTree =
result.memMaxSize = memMaxSize
result.currentSeq = 0
result.nextSSTableId = nextId
discard
proc put*(db: LSMTree, key: string, value: seq[byte]) =
acquire(db.lock)