프로젝트가 이미 KSP를 사용하고 있어 KSP 인수 기반으로 Room 스키마 export를 활성화했습니다.
- app/build.gradle: ksp { room.schemaLocation 등 } 추가
- Room DB 클래스 3종: exportSchema=true
- app/schemas 디렉터리 버전 관리
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
{
 | 
						|
  "formatVersion": 1,
 | 
						|
  "database": {
 | 
						|
    "version": 1,
 | 
						|
    "identityHash": "b9a331035b36b70f8ca7a14962b13fdf",
 | 
						|
    "entities": [
 | 
						|
      {
 | 
						|
        "tableName": "playback_tracking",
 | 
						|
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `contentId` INTEGER NOT NULL, `totalDuration` INTEGER NOT NULL, `startPosition` INTEGER NOT NULL, `isFree` INTEGER NOT NULL, `isPreview` INTEGER NOT NULL, `endPosition` INTEGER, `playDateTime` TEXT NOT NULL)",
 | 
						|
        "fields": [
 | 
						|
          {
 | 
						|
            "fieldPath": "id",
 | 
						|
            "columnName": "id",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": true
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "contentId",
 | 
						|
            "columnName": "contentId",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": true
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "totalDuration",
 | 
						|
            "columnName": "totalDuration",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": true
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "startPosition",
 | 
						|
            "columnName": "startPosition",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": true
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "isFree",
 | 
						|
            "columnName": "isFree",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": true
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "isPreview",
 | 
						|
            "columnName": "isPreview",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": true
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "endPosition",
 | 
						|
            "columnName": "endPosition",
 | 
						|
            "affinity": "INTEGER",
 | 
						|
            "notNull": false
 | 
						|
          },
 | 
						|
          {
 | 
						|
            "fieldPath": "playDateTime",
 | 
						|
            "columnName": "playDateTime",
 | 
						|
            "affinity": "TEXT",
 | 
						|
            "notNull": true
 | 
						|
          }
 | 
						|
        ],
 | 
						|
        "primaryKey": {
 | 
						|
          "autoGenerate": true,
 | 
						|
          "columnNames": [
 | 
						|
            "id"
 | 
						|
          ]
 | 
						|
        },
 | 
						|
        "indices": [],
 | 
						|
        "foreignKeys": []
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "views": [],
 | 
						|
    "setupQueries": [
 | 
						|
      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
 | 
						|
      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b9a331035b36b70f8ca7a14962b13fdf')"
 | 
						|
    ]
 | 
						|
  }
 | 
						|
} |