@startuml
!define DATABASE_ENTITY(x) entity x
component main {
}
component config {
}
component log {
}
component curlEngine {
}
component util {
}
component onedrive {
}
component syncEngine {
}
component itemdb {
}
component clientSideFiltering {
}
component monitor {
}
component sqlite {
}
component qxor {
}

DATABASE_ENTITY("Database")

main --> config
main --> log
main --> curlEngine
main --> util
main --> onedrive
main --> syncEngine
main --> itemdb
main --> clientSideFiltering
main --> monitor

config --> log
config --> util

clientSideFiltering --> config
clientSideFiltering --> util
clientSideFiltering --> log

syncEngine --> config
syncEngine --> log
syncEngine --> util
syncEngine --> onedrive
syncEngine --> itemdb
syncEngine --> clientSideFiltering

util --> log
util --> config
util --> qxor
util --> curlEngine

sqlite --> log
sqlite -> "Database" : uses

onedrive --> config
onedrive --> log
onedrive --> util
onedrive --> curlEngine

monitor --> config
monitor --> util
monitor --> log
monitor --> clientSideFiltering
monitor .> syncEngine : inotify event

itemdb --> sqlite
itemdb --> util
itemdb --> log

curlEngine --> log
@enduml
