# PaperTrail/AuditDB

## Explanation
Papertrail/AuditDB will work using Three Segments
- dbwrappersMap [independant]
- maindb [independant]
- singledb [dependant on maindb]
### DbwrappersMap
- Initiated Once
- from dbwrapper package
- signature : map[string]*dbwrapper
- uses db path as key, and dbwrapper is created using path
- ex : [some-root/001.db] = *dbwrapper{dbpath:some-root/001.db}
### MainAuditDB
- Created like all others (webserver,backup...)
- Has Logics to generate dbwrapper for valid dates,using Config,Current &DateRanges DB
- It Uses Dbwrappers Map to create dbwrapper for single DB
### SingleDB
- Takes MainAuditDB Api as dependency
- Doesn't know which db to use
- Takes Dbwrapper from MainDB Api
## Flow
- MainDBCreated
- SingleDBCreated Using MainDbApi
- SingleDB Calls For Current DBWrapper
- MainDB Detemines If The Current Cached Table is valid, if not then updates, generates the absolute path and gets dbwrapper from calling DbwrappersMap
- DbwrappersMap checks if it already has dbwrapper for the path provided, if not created using path
- Finally the singledb has the dbwrapper
- It can do crud operations
###### Note : We will be using caching strategies to make things faster, already work in progress.