Skip to content
  1. Apr 07, 2019
  2. Mar 29, 2019
    • 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