Skip to content
  • Yuanle Song's avatar
    v0.101.0 redesign use of main and user database. · 8b6cf027
    Yuanle Song authored
    the old design have flaws and limitations. see :id001: and :id002: in
    operational file.
    
    new design:
    
    open :memory: db readwrite, this will be the m_db handler.
    
    try attach main db at known path (readonly if possible) to "maindb".
    if failed, try next known path,
    if all failed, initDB() should return false and gave up.
    
    try attach user db at known path to "userdb" schema, if failed,
    create :memory: db and initialize it as user db. attach it as "userdb"
    schema.
    
    update all query against main db to query from maindb.* table.
    update all SQL against user db to run again userdb.* table.
    
    benefits:
    - access to user db is concurrent safe. multiple libpyzy app won't overwrite
      user's user db file and lose data.
    - there is no need to saveUserDB() using timer in the bg.
    - there is no need to copy data from user db to :memory:, if user db is
      large, this can lower memory usage.
    8b6cf027