The database modules are structured as follows:
Any module using lib-database must either depend on lib-database-entities or include a processed version of those classes with identical public classes and methods.
Notes for migrating:
When renaming or dropping a column in sqlite, make sure to drop the old table after inserts and then create the index. Example below
database.execSQL(“ALTER TABLE ClazzMember RENAME to ClazzMember_OLD”)
database.execSQL(“CREATE TABLE IF NOT EXISTS ClazzMember
(clazzMemberUid
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, clazzMemberPersonUid
INTEGER NOT NULL DEFAULT 0, clazzMemberClazzUid
INTEGER NOT NULL DEFAULT 0, clazzMemberDateJoined
INTEGER NOT NULL, clazzMemberDateLeft
INTEGER NOT NULL, clazzMemberRole
INTEGER NOT NULL, clazzMemberAttendancePercentage
REAL NOT NULL, clazzMemberActive
INTEGER NOT NULL, clazzMemberLocalChangeSeqNum
INTEGER NOT NULL, clazzMemberMasterChangeSeqNum
INTEGER NOT NULL, clazzMemberLastChangedBy
INTEGER NOT NULL)”)
database.execSQL(“INSERT INTO ClazzMember (clazzMemberUid, clazzMemberPersonUid, clazzMemberClazzUid, clazzMemberDateJoined, clazzMemberDateLeft, clazzMemberRole, clazzMemberAttendancePercentage, clazzMemberActive, clazzMemberLocalChangeSeqNum, clazzMemberMasterChangeSeqNum, clazzMemberLastChangedBy) SELECT clazzMemberUid, clazzMemberPersonUid, clazzMemberClazzUid, dateJoined, dateLeft, role, clazzMemberAttendancePercentage, clazzMemberActive, clazzMemberLocalChangeSeqNum, clazzMemberMasterChangeSeqNum, clazzMemberLastChangedBy FROM ClazzMember_OLD”)
database.execSQL(“DROP TABLE ClazzMember_OLD”)
database.execSQL(“CREATE INDEX IF NOT EXISTS index_ClazzMember_clazzMemberPersonUid ON ClazzMember (clazzMemberPersonUid)”)
database.execSQL(“CREATE INDEX IF NOT EXISTS index_ClazzMember_clazzMemberClazzUid ON ClazzMember (clazzMemberClazzUid)”)
database.execSQL(“CREATE TABLE IF NOT EXISTS ClazzMember_trk
(pk
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, epk
INTEGER NOT NULL, clientId
INTEGER NOT NULL, csn
INTEGER NOT NULL, rx
INTEGER NOT NULL, reqId
INTEGER NOT NULL, ts
INTEGER NOT NULL)”)
database.execSQL(“CREATE INDEX IF NOT EXISTS index_ClazzMember_trk_clientId_epk_rx_csn
ON ClazzMember_trk
(clientId
, epk
, rx
, csn
)”)
find ./lib-database/src/commonMain/ -name \*.kt -print0 | xargs -0 sed -i 's/ DataSource.Factory/ DoorDataSource.Factory/g'
find ./lib-database/src/commonMain/ -name \*.kt -print0 | xargs -0 sed -i 's/import androidx.paging.DataSource/import com.ustadmobile.door.DoorDataSource/g'
find ./core/ -name \*.kt -print0 | xargs -0 sed -i 's/ DataSource.Factory/ DoorDataSourceFactory/g'
find ./core/ -name \*.kt -print0 | xargs -0 sed -i 's/import androidx.paging.DataSource/import com.ustadmobile.door.DoorDataSourceFactory/g'