1/** 2 * @file Describe the file 3 * Copyright (c) 2023 Huawei Device Co., Ltd. 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17import ohosDataRdb from '@ohos.data.relationalStore'; 18import { EventColumns } from '@ohos/datastructure/src/main/ets/events/EventColumns'; 19import { InstancesColumns } from '@ohos/datastructure/src/main/ets/instances/InstancesColumns'; 20import { CalendarsColumns } from '@ohos/datastructure/src/main/ets/calendars/CalendarsColumns'; 21import { ColorsColumns } from '@ohos/datastructure/src/main/ets/colors/ColorsColumns'; 22import { RemindersColumns } from '@ohos/datastructure/src/main/ets/reminders/RemindersColumns'; 23import { AttendeesColumns } from '@ohos/datastructure/src/main/ets/attendees/AttendeesColumns'; 24import { CalendarAlertsColumns } from '@ohos/datastructure/src/main/ets/calendaralerts/CalendarAlertsColumns'; 25import { CalendarCacheColumns } from '@ohos/datastructure/src/main/ets/calendarcache/CalendarCacheColumns'; 26import { EventsRawTimesColumns } from '@ohos/datastructure/src/main/ets/eventsrawtimes/EventsRawTimesColumns'; 27import { 28 ExtendCalendarEventColumns 29} from '@ohos/datastructure/src/main/ets/extendcalendarevent/ExtendCalendarEventColumns'; 30import { 31 ExtendedPropertiesColumns 32} from '@ohos/datastructure/src/main/ets/extendedproperties/ExtendedPropertiesColumns'; 33import { SyncStateColumns } from '@ohos/datastructure/src/main/ets/syncstate/SyncStateColumns'; 34import { MapAddressHistoryColumns } from '@ohos/datastructure/src/main/ets/location/MapAddressHistoryColumns'; 35import { SyncStateMetadataColumns } from '@ohos/datastructure/src/main/ets/syncstate/SyncStateMetadataColumns'; 36import { Constants } from '@ohos/datastructure/src/main/ets/Constants'; 37import { CalendarMetaDataColumns } from '@ohos/datastructure/src/main/ets/calendarmetadata/CalendarMetaDataColumns'; 38import { Log } from '@ohos/common/src/main/ets/utils/Log'; 39import { GlobalThis } from '@ohos/common/src/main/ets/utils/GlobalThis'; 40 41/** 42 * the create Events table sql. OS has a limit of 1024 bytes for each sql string, and this sql string is beyond 43 * 1024 bytes, so we don't use this sql directly now. 44 */ 45let CREATE_EVENTS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${EventColumns.TABLE_NAME} (` 46 + `${EventColumns.ID} INTEGER PRIMARY KEY AUTOINCREMENT, ` 47 + `${EventColumns.SYNC_ID} TEXT, ` 48 + `${EventColumns.DIRTY} INTEGER, ` 49 + `${EventColumns.MUTATORS} TEXT, ` 50 + `${EventColumns.EVENT_CALENDAR_TYPE} INTEGER NOT NULL DEFAULT 0), ` 51 + `${EventColumns.EVENT_IMAGE_TYPE} TEXT, ` 52 + `${EventColumns.LAST_SYNCED} INTEGER DEFAULT 0, ` 53 + `${EventColumns.CALENDAR_ID} INTEGER NOT NULL, ` 54 + `${EventColumns.TITLE} TEXT, ` 55 + `${EventColumns.EVENT_LOCATION} TEXT, ` 56 + `${EventColumns.LOCATION_LONGITUDE} TEXT, ` 57 + `${EventColumns.LOCATION_LATITUDE} TEXT, ` 58 + `${EventColumns.DESCRIPTION} TEXT, ` 59 + `${EventColumns.EVENT_COLOR} INTEGER, ` 60 + `${EventColumns.EVENT_COLOR_INDEX} TEXT, ` 61 + `${EventColumns.EVENT_STATUS} INTEGER, ` 62 + `${EventColumns.SELF_ATTENDEE_STATUS} INTEGER NOT NULL DEFAULT 0, ` 63 + `${EventColumns.DTSTART} INTEGER, ` 64 + `${EventColumns.DTEND} INTEGER, ` 65 + `${EventColumns.EVENT_TIMEZONE} TEXT, ` 66 + `${EventColumns.DURATION} TEXT, ` 67 + `${EventColumns.ALLDAY} INTEGER NOT NULL DEFAULT 0, ` 68 + `${EventColumns.ACCESS_LEVEL} INTEGER NOT NULL DEFAULT 0, ` 69 + `${EventColumns.AVAILABILITY} INTEGER NOT NULL DEFAULT 0, ` 70 + `${EventColumns.HAS_ALARM} INTEGER NOT NULL DEFAULT 0, ` 71 + `${EventColumns.HAS_EXTENDED_PROPERTIES} INTEGER NOT NULL DEFAULT 0, ` 72 + `${EventColumns.RRULE} TEXT, ` 73 + `${EventColumns.RDATE} TEXT, ` 74 + `${EventColumns.EXRULE} TEXT, ` 75 + `${EventColumns.EXDATE} TEXT, ` 76 + `${EventColumns.ORIGINAL_ID} INTEGER, ` 77 + `${EventColumns.ORIGINAL_SYNC_ID} TEXT, ` 78 + `${EventColumns.ORIGINAL_INSTANCE_TIME} INTEGER, ` 79 + `${EventColumns.ORIGINAL_ALL_DAY} INTEGER, ` 80 + `${EventColumns.LAST_DATE} INTEGER, ` 81 + `${EventColumns.EVENT_TIME_STAMP} INTEGER NOT NULL DEFAULT 0, ` 82 + `${EventColumns.HAS_ATTENDEE_DATE} INTEGER NOT NULL DEFAULT 0, ` 83 + `${EventColumns.GUESTS_CAN_MODIFY} INTEGER NOT NULL DEFAULT 0, ` 84 + `${EventColumns.GUESTS_CAN_INVITE_OTHERS} INTEGER NOT NULL DEFAULT 1, ` 85 + `${EventColumns.GUESTS_CAN_SEE_GUESTS} INTEGER NOT NULL DEFAULT 1, ` 86 + `${EventColumns.ORGANIZER} TEXT, ` //STRING 87 + `${EventColumns.IS_ORGANIZER} INTEGER, ` 88 + `${EventColumns.DELETED} INTEGER NOT NULL DEFAULT 0, ` 89 + `${EventColumns.EVENT_END_TIMEZONE} TEXT, ` 90 + `${EventColumns.CUSTOM_APP_PACKAGE} TEXT, ` 91 + `${EventColumns.CUSTOM_APP_URI} TEXT, ` 92 + `${EventColumns.UID2445} TEXT, ` 93 + `${EventColumns.VERSION} INTEGER NOT NULL DEFAULT 0, ` 94 + `${EventColumns.EVENT_UUID} TEXT, ` 95 + `${EventColumns.HWEXT_ALERT_TYPE} INTEGER NOT NULL DEFAULT 0, ` 96 + `${EventColumns.IMPORTANT_EVENT_TYPE} INTEGER NOT NULL DEFAULT 0, ` 97 + `${EventColumns.SYNC_DATA1} TEXT, ` 98 + `${EventColumns.SYNC_DATA2} TEXT, ` 99 + `${EventColumns.SYNC_DATA3} TEXT, ` 100 + `${EventColumns.SYNC_DATA4} TEXT, ` 101 + `${EventColumns.SYNC_DATA5} TEXT, ` 102 + `${EventColumns.SYNC_DATA6} TEXT, ` 103 + `${EventColumns.SYNC_DATA7} TEXT, ` 104 + `${EventColumns.SYNC_DATA8} TEXT, ` 105 + `${EventColumns.SYNC_DATA9} TEXT, ` 106 + `${EventColumns.SYNC_DATA10} TEXT, ` 107 + `${EventColumns.KV_SYNC} INTEGER NOT NULL DEFAULT 0, ` 108 + `${EventColumns.KV_SYNC_TIME} INTEGER NOT NULL DEFAULT 0, ` 109 + `${EventColumns.CREATOR} TEXT NOT NULL)`; 110 111/** 112 * the create Calendars table sql 113 */ 114let CREATE_CALENDARS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${CalendarsColumns.TABLE_NAME} (` 115 + `${CalendarsColumns.ID} INTEGER PRIMARY KEY, ` 116 + `${CalendarsColumns.ACCOUNT_NAME} TEXT, ` 117 + `${CalendarsColumns.ACCOUNT_TYPE} TEXT, ` 118 + `${CalendarsColumns.SYNC_ID} TEXT, ` 119 + `${CalendarsColumns.DIRTY} INTEGER, ` 120 + `${CalendarsColumns.MUTATORS} TEXT, ` 121 + `${CalendarsColumns.NAME} TEXT, ` 122 + `${CalendarsColumns.CALENDAR_DISPLAY_NAME} TEXT, ` 123 + `${CalendarsColumns.CALENDAR_COLOR} INTEGER, ` 124 + `${CalendarsColumns.CALENDAR_COLOR_INDEX} TEXT, ` 125 + `${CalendarsColumns.CALENDAR_ACCESS_LEVEL} INTEGER, ` 126 + `${CalendarsColumns.VISIBLE} INTEGER NOT NULL DEFAULT 1, ` 127 + `${CalendarsColumns.SYNC_EVENTS} INTEGER NOT NULL DEFAULT 0, ` 128 + `${CalendarsColumns.CALENDAR_LOCATION} TEXT, ` 129 + `${CalendarsColumns.CALENDAR_TIMEZONE} TEXT, ` 130 + `${CalendarsColumns.OWNER_ACCOUNT} TEXT, ` 131 + `${CalendarsColumns.IS_PRIMARY} INTEGER, ` 132 + `${CalendarsColumns.CAN_ORGANIZER_RESPOND} INTEGER NOT NULL DEFAULT 1, ` 133 + `${CalendarsColumns.CAN_MODIFY_TIMEZONE} INTEGER DEFAULT 1, ` 134 + `${CalendarsColumns.CAN_PARTIALLY_UPDATE} INTEGER DEFAULT 0, ` 135 + `${CalendarsColumns.MAX_REMINDERS} INTEGER DEFAULT 5, ` 136 + `${CalendarsColumns.ALLOWED_REMINDERS} TEXT DEFAULT '0,1', ` 137 + `${CalendarsColumns.ALLOWED_AVAILABILITY} TEXT DEFAULT '0,1', ` 138 + `${CalendarsColumns.ALLOWED_ATTENDEE_TYPES} TEXT DEFAULT '0,1,2', ` 139 + `${CalendarsColumns.DELETED} INTEGER NOT NULL DEFAULT 0, ` 140 + `${CalendarsColumns.CALENDAR_TIME_STAMP} INTEGER NOT NULL DEFAULT 0, ` 141 + `${CalendarsColumns.CAL_SYNC1} TEXT, ` 142 + `${CalendarsColumns.CAL_SYNC2} TEXT, ` 143 + `${CalendarsColumns.CAL_SYNC3} TEXT, ` 144 + `${CalendarsColumns.CAL_SYNC4} TEXT, ` 145 + `${CalendarsColumns.CAL_SYNC5} TEXT, ` 146 + `${CalendarsColumns.CAL_SYNC6} TEXT, ` 147 + `${CalendarsColumns.CAL_SYNC7} TEXT, ` 148 + `${CalendarsColumns.CAL_SYNC8} TEXT, ` 149 + `${CalendarsColumns.CAL_SYNC9} TEXT, ` 150 + `${CalendarsColumns.CAL_SYNC10} TEXT, ` 151 + `${CalendarsColumns.CAN_REMINDER} INTEGER NOT NULL DEFAULT 1, ` 152 + `${CalendarsColumns.CREATOR} TEXT NOT NULL)`; 153 154/** 155 * the create Reminders table sql 156 */ 157let CREATE_REMINDERS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${RemindersColumns.TABLE_NAME} (` 158 + `${RemindersColumns.ID} INTEGER PRIMARY KEY, ` 159 + `${RemindersColumns.EVENT_ID} INTEGER, ` 160 + `${RemindersColumns.MINUTES} INTEGER, ` 161 + `${RemindersColumns.METHOD} INTEGER NOT NULL DEFAULT 0, ` 162 + `${RemindersColumns.CREATOR} TEXT NOT NULL)`; 163 164/** 165 * the create Instances table sql 166 */ 167let CREATE_INSTANCES_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${InstancesColumns.TABLE_NAME} (` 168 + `${InstancesColumns.ID} INTEGER PRIMARY KEY, ` 169 + `${InstancesColumns.EVENT_ID} INTEGER, ` 170 + `${InstancesColumns.BEGIN} INTEGER, ` 171 + `${InstancesColumns.END} INTEGER, ` 172 + `${InstancesColumns.START_DAY} INTEGER, ` 173 + `${InstancesColumns.END_DAY} INTEGER, ` 174 + `${InstancesColumns.START_MINUTE} INTEGER, ` 175 + `${InstancesColumns.END_MINUTE} INTEGER, ` 176 + `${InstancesColumns.CREATOR} TEXT NOT NULL,` 177 + `UNIQUE (${InstancesColumns.EVENT_ID},${InstancesColumns.BEGIN},` 178 + `${InstancesColumns.END}))`; 179 180/** 181 * the create Colors table sql 182 */ 183let CREATE_COLORS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${ColorsColumns.TABLE_NAME} (` 184 + `${ColorsColumns.ID} INTEGER PRIMARY KEY, ` 185 + `${ColorsColumns.ACCOUNT_NAME} TEXT NOT NULL, ` 186 + `${ColorsColumns.ACCOUNT_TYPE} TEXT NOT NULL, ` 187 + `${ColorsColumns.DATA} TEXT, ` 188 + `${ColorsColumns.COLOR_TYPE} INTEGER NOT NULL, ` 189 + `${ColorsColumns.COLOR_INDEX} TEXT NOT NULL, ` 190 + `${ColorsColumns.COLOR} INTEGER NOT NULL)`; 191 192/** 193 * the create Attendees table sql 194 */ 195let CREATE_ATTENDEES_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${AttendeesColumns.TABLE_NAME} (` 196 + `${AttendeesColumns.ID} INTEGER PRIMARY KEY, ` 197 + `${AttendeesColumns.EVENT_ID} INTEGER, ` 198 + `${AttendeesColumns.ATTENDEE_NAME} TEXT, ` 199 + `${AttendeesColumns.ATTENDEE_EMAIL} TEXT, ` 200 + `${AttendeesColumns.ATTENDEE_STATUS} INTEGER, ` 201 + `${AttendeesColumns.ATTENDEE_RELATIONSHIP} INTEGER, ` 202 + `${AttendeesColumns.ATTENDEE_TYPE} INTEGER, ` 203 + `${AttendeesColumns.ATTENDEE_IDENTITY} TEXT, ` 204 + `${AttendeesColumns.ATTENDEE_ID_NAMESPACE} TEXT)`; 205 206/** 207 * the create CalendarAlerts table sql 208 */ 209let CREATE_CALENDAR_ALERTS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${CalendarAlertsColumns.TABLE_NAME} (` 210 + `${CalendarAlertsColumns.ID} INTEGER PRIMARY KEY, ` 211 + `${CalendarAlertsColumns.EVENT_ID} INTEGER, ` 212 + `${CalendarAlertsColumns.BEGIN} INTEGER NOT NULL, ` 213 + `${CalendarAlertsColumns.END} INTEGER NOT NULL, ` 214 + `${CalendarAlertsColumns.ALARM_TIME} INTEGER NOT NULL, ` 215 + `${CalendarAlertsColumns.CREATION_TIME} INTEGER NOT NULL DEFAULT 0, ` 216 + `${CalendarAlertsColumns.RECEIVED_TIME} INTEGER NOT NULL DEFAULT 0, ` 217 + `${CalendarAlertsColumns.NOTIFY_TIME} INTEGER NOT NULL DEFAULT 0, ` 218 + `${CalendarAlertsColumns.STATE} INTEGER NOT NULL, ` 219 + `${CalendarAlertsColumns.MINUTES} INTEGER, ` 220 + `${CalendarAlertsColumns.CREATOR} TEXT NOT NULL,` 221 + `UNIQUE (${CalendarAlertsColumns.ALARM_TIME},${CalendarAlertsColumns.BEGIN},` 222 + `${CalendarAlertsColumns.EVENT_ID}))`; 223 224/** 225 * the create CalendarCache table sql 226 */ 227let CREATE_CALENDAR_CACHE_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${CalendarCacheColumns.TABLE_NAME} (` 228 + `${CalendarCacheColumns.ID} INTEGER PRIMARY KEY, ` 229 + `${CalendarCacheColumns.KEY} TEXT NOT NULL, ` 230 + `${CalendarCacheColumns.VALUE} TEXT)`; 231 232/** 233 * the create CalendarMetaData table sql 234 */ 235let CREATE_CALENDAR_METADATA_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ` 236 + `${CalendarMetaDataColumns.TABLE_NAME} (` 237 + `${CalendarMetaDataColumns.ID} INTEGER PRIMARY KEY, ` 238 + `${CalendarMetaDataColumns.LOCAL_TIME_ZONE} TEXT, ` 239 + `${CalendarMetaDataColumns.MIN_INSTANCE} INTEGER, ` 240 + `${CalendarMetaDataColumns.MAX_INSTANCE} INTEGER)`; 241 242/** 243 * the create EventsRawTimes table sql 244 */ 245let CREATE_EVENTS_RAW_TIMES_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ` 246 + `${EventsRawTimesColumns.TABLE_NAME} (` 247 + `${EventsRawTimesColumns.ID} INTEGER PRIMARY KEY, ` 248 + `${EventsRawTimesColumns.EVENT_ID} INTEGER NOT NULL, ` 249 + `${EventsRawTimesColumns.DT_START_2445} TEXT, ` 250 + `${EventsRawTimesColumns.DT_END_2445} TEXT, ` 251 + `${EventsRawTimesColumns.ORIGINAL_INSTANCE_TIME2445} TEXT, ` 252 + `${EventsRawTimesColumns.LAST_DATE2445} TEXT, ` 253 + `UNIQUE (${EventsRawTimesColumns.EVENT_ID}))`; 254 255/** 256 * the create map_address_history table sql 257 */ 258let CREATE_MAP_ADDRESS_HISTORY_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ` 259 + `${MapAddressHistoryColumns.TABLE_NAME} (` 260 + `${MapAddressHistoryColumns.ID} INTEGER PRIMARY KEY AUTOINCREMENT, ` 261 + `${MapAddressHistoryColumns.ADDRESS} TEXT, ` 262 + `${MapAddressHistoryColumns.NAME} TEXT, ` 263 + `${MapAddressHistoryColumns.LAT} TEXT, ` 264 + `${MapAddressHistoryColumns.LON} TEXT, ` 265 + `${MapAddressHistoryColumns.TIME} TEXT, ` 266 + `${MapAddressHistoryColumns.DATA1} TEXT, ` 267 + `${MapAddressHistoryColumns.DATA2} TEXT)`; 268 269/** 270 * the create ExtendedProperties table sql 271 */ 272let CREATE_EXTENDED_PROPERTIES_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ` 273 + `${ExtendedPropertiesColumns.TABLE_NAME} (` 274 + `${ExtendedPropertiesColumns.ID} INTEGER PRIMARY KEY, ` 275 + `${ExtendedPropertiesColumns.EVENT_ID} INTEGER, ` 276 + `${ExtendedPropertiesColumns.NAME} TEXT, ` 277 + `${ExtendedPropertiesColumns.VALUE} TEXT)`; 278 279/** 280 * the create _sync_state table sql 281 */ 282let CREATE_SYNC_STATE_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${SyncStateColumns.TABLE_NAME} (` 283 + `${SyncStateColumns.ID} INTEGER PRIMARY KEY, ` 284 + `${SyncStateColumns.ACCOUNT_NAME} TEXT NOT NULL, ` 285 + `${SyncStateColumns.ACCOUNT_TYPE} TEXT NOT NULL, ` 286 + `${SyncStateColumns.DATA} TEXT NOT NULL, ` 287 + `UNIQUE (${SyncStateColumns.ACCOUNT_NAME},${SyncStateColumns.ACCOUNT_TYPE}))`; 288 289/** 290 * the create _sync_state_metadata table sql 291 */ 292let CREATE_SYNC_STATE_METADATA_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ` 293 + `${SyncStateMetadataColumns.TABLE_NAME} (` 294 + `${SyncStateMetadataColumns.VERSION} INTEGER)`; 295 296/** 297 * the create ExtendCalendarEvent table sql 298 */ 299let CREATE_EXTEND_CALENDAR_EVENT_TABLE_NAME_SQL = `CREATE TABLE IF NOT EXISTS ` 300 + `${ExtendCalendarEventColumns.TABLE_NAME} (` 301 + `${ExtendCalendarEventColumns.ID} INTEGER PRIMARY KEY, ` 302 + `${ExtendCalendarEventColumns.HWEXT_EVENT_ID} INTEGER, ` 303 + `${ExtendCalendarEventColumns.HWEXT_TYPE} INTEGER, ` 304 + `${ExtendCalendarEventColumns.HWEXT_APP_URI} TEXT, ` 305 + `${ExtendCalendarEventColumns.HWEXT_APP_NAME} TEXT, ` 306 + `${ExtendCalendarEventColumns.HWEXT_ACTION} TEXT, ` 307 + `${ExtendCalendarEventColumns.HWEXT_METHOD} INTEGER, ` 308 + `${ExtendCalendarEventColumns.HWEXT_SUPPORT_MIN_VERSION} INTEGER, ` 309 + `${ExtendCalendarEventColumns.HWEXT_STATUS} INTEGER, ` 310 + `${ExtendCalendarEventColumns.HWEXT_DESCRIPTION} TEXT)`; 311 312let TAG = 'CalendarDataHelper'; 313 314/** 315 * the class to initialize the calendar database 316 * 317 * @since 2022-04-06 318 */ 319class CalendarDataHelper { 320 private static instance: CalendarDataHelper; 321 322 private rdbStore: ohosDataRdb.RdbStore | undefined = undefined; 323 324 private constructor() { 325 } 326 327 /** 328 * get the instance of CalendarDataHelper class 329 */ 330 public static getInstance() { 331 if (!CalendarDataHelper.instance) { 332 Log.log(TAG, 'call getInstance init'); 333 CalendarDataHelper.instance = new CalendarDataHelper(); 334 } 335 return CalendarDataHelper.instance; 336 } 337 338 /** 339 * get the instance of rdbStore 340 */ 341 public async getRdbStore() { 342 if (this.rdbStore === null || this.rdbStore === undefined) { 343 await CalendarDataHelper.getInstance().initRdbStore(); 344 } 345 return this.rdbStore; 346 } 347 348 private async initRdbStore() { 349 Log.log(TAG, 'call initRdbStore start'); 350 this.rdbStore = await ohosDataRdb.getRdbStore(GlobalThis.getExtensionContext(), { 351 name: Constants.DB_NAME, 352 securityLevel: ohosDataRdb.SecurityLevel.S1, 353 }).then(); //IDE识别接口有问题,暂时改成这样,待后续更新IDE改回 354 if (this.rdbStore == null || this.rdbStore == undefined) { 355 Log.error(TAG, 'initRdbStore rdbStore is null'); 356 return; 357 } 358 try { 359 await this.createEventsTable(); 360 Log.log(TAG, 'initRdbStore createEventsTable succeed'); 361 } catch (err) { 362 Log.error(TAG, `initRdbStore createEventsTable get err:${err.message}`); 363 } 364 Log.log(TAG, 'initRdbStore executeSql start'); 365 try { 366 await this.rdbStore?.executeSql(CREATE_CALENDARS_TABLE_SQL, []); 367 Log.log(TAG, 'initRdbStore createCalendarsTable succeed'); 368 await this.rdbStore?.executeSql(CREATE_REMINDERS_TABLE_SQL, []); 369 Log.log(TAG, 'initRdbStore CREATE_REMINDERS_TABLE_SQL succeed'); 370 await this.rdbStore?.executeSql(CREATE_INSTANCES_TABLE_SQL, []); 371 Log.log(TAG, 'initRdbStore CREATE_INSTANCES_TABLE_SQL succeed'); 372 await this.rdbStore?.executeSql(CREATE_COLORS_TABLE_SQL, []); 373 Log.log(TAG, 'initRdbStore CREATE_COLORS_TABLE_SQL succeed'); 374 await this.rdbStore?.executeSql(CREATE_ATTENDEES_TABLE_SQL, []); 375 Log.log(TAG, 'initRdbStore CREATE_ATTENDEES_TABLE_SQL succeed'); 376 await this.rdbStore?.executeSql(CREATE_CALENDAR_ALERTS_TABLE_SQL, []); 377 Log.log(TAG, 'initRdbStore CREATE_CALENDAR_ALERTS_TABLE_SQL succeed'); 378 await this.rdbStore?.executeSql(CREATE_CALENDAR_CACHE_TABLE_SQL, []); 379 Log.log(TAG, 'initRdbStore CREATE_CALENDAR_CACHE_TABLE_SQL succeed'); 380 await this.rdbStore?.executeSql(CREATE_CALENDAR_METADATA_TABLE_SQL, []); 381 Log.log(TAG, 'initRdbStore CREATE_CALENDAR_METADATA_TABLE_SQL succeed'); 382 await this.rdbStore?.executeSql(CREATE_EVENTS_RAW_TIMES_TABLE_SQL, []); 383 Log.log(TAG, 'initRdbStore CREATE_EVENTS_RAW_TIMES_TABLE_SQL succeed'); 384 await this.rdbStore?.executeSql(CREATE_MAP_ADDRESS_HISTORY_TABLE_SQL, []); 385 Log.log(TAG, 'initRdbStore CREATE_MAP_ADDRESS_HISTORY_TABLE_SQL succeed'); 386 await this.rdbStore?.executeSql(CREATE_EXTENDED_PROPERTIES_TABLE_SQL, []); 387 Log.log(TAG, 'initRdbStore CREATE_EXTENDED_PROPERTIES_TABLE_SQL succeed'); 388 await this.rdbStore?.executeSql(CREATE_SYNC_STATE_TABLE_SQL, []); 389 Log.log(TAG, 'initRdbStore CREATE_SYNC_STATE_TABLE_SQL succeed'); 390 await this.rdbStore?.executeSql(CREATE_SYNC_STATE_METADATA_TABLE_SQL, []); 391 Log.log(TAG, 'initRdbStore CREATE_SYNC_STATE_METADATA_TABLE_SQL succeed'); 392 await this.rdbStore?.executeSql(CREATE_EXTEND_CALENDAR_EVENT_TABLE_NAME_SQL, []); 393 Log.log(TAG, 'initRdbStore CREATE_EXTEND_CALENDAR_EVENT_TABLE_NAME_SQL succeed'); 394 395 this.createSyncIdUpdateTrigger(); 396 Log.log(TAG, 'initRdbStore createSyncIdUpdateTrigger succeed'); 397 this.createDeleteEventTriggers(); 398 Log.log(TAG, 'initRdbStore createDeleteEventTriggers succeed'); 399 this.createColorsTriggers(); 400 Log.log(TAG, 'initRdbStore createColorsTriggers succeed'); 401 this.createCalendarCleanupTrigger(); 402 Log.log(TAG, 'initRdbStore createCalendarCleanupTrigger succeed'); 403 Log.log(TAG, 'initRdbStore executeSql end'); 404 } catch (err) { 405 Log.error(TAG, `initRdbStore err:${err.message}`); 406 } 407 } 408 409 private async createEventsTable() { 410 // the database has a limit of 1024 byte for sql strings, so we create some fields in the create sql, 411 // other fields are added later. 412 Log.log(TAG, 'call createEventsTable start'); 413 let CREATE_EVENTS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${EventColumns.TABLE_NAME} (` 414 + `${EventColumns.ID} INTEGER PRIMARY KEY AUTOINCREMENT, ` 415 + `${EventColumns.SYNC_ID} TEXT, ` 416 + `${EventColumns.DIRTY} INTEGER, ` 417 + `${EventColumns.MUTATORS} TEXT, ` 418 + `${EventColumns.EVENT_CALENDAR_TYPE} INTEGER NOT NULL DEFAULT 0)`; 419 420 try { 421 await this.rdbStore?.executeSql(CREATE_EVENTS_TABLE_SQL, []); 422 Log.log(TAG, 'call createEventsTable add column start'); 423 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 424 `${EventColumns.EVENT_IMAGE_TYPE} TEXT`, []); 425 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 426 `${EventColumns.LAST_SYNCED} INTEGER DEFAULT 0`, []); 427 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 428 `${EventColumns.CALENDAR_ID} INTEGER NOT NULL`, []); 429 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 430 `${EventColumns.TITLE} TEXT`, []); 431 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 432 `${EventColumns.EVENT_LOCATION} TEXT`, []); 433 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 434 `${EventColumns.LOCATION_LONGITUDE} TEXT`, []); 435 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 436 `${EventColumns.LOCATION_LATITUDE} TEXT`, []); 437 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 438 `${EventColumns.DESCRIPTION} TEXT`, []); 439 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 440 `${EventColumns.EVENT_COLOR} INTEGER`, []); 441 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 442 `${EventColumns.EVENT_COLOR_INDEX} TEXT`, []); 443 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 444 `${EventColumns.EVENT_STATUS} INTEGER`, []); 445 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 446 `${EventColumns.SELF_ATTENDEE_STATUS} INTEGER NOT NULL DEFAULT 0`, []); 447 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 448 `${EventColumns.DTSTART} INTEGER`, []); 449 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 450 `${EventColumns.DTEND} INTEGER`, []); 451 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 452 `${EventColumns.EVENT_TIMEZONE} TEXT`, []); 453 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 454 `${EventColumns.DURATION} TEXT`, []); 455 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 456 `${EventColumns.ALLDAY} INTEGER NOT NULL DEFAULT 0`, []); 457 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 458 `${EventColumns.ACCESS_LEVEL} INTEGER NOT NULL DEFAULT 0`, []); 459 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 460 `${EventColumns.AVAILABILITY} INTEGER NOT NULL DEFAULT 0`, []); 461 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 462 `${EventColumns.HAS_ALARM} INTEGER NOT NULL DEFAULT 0`, []); 463 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 464 `${EventColumns.HAS_EXTENDED_PROPERTIES} INTEGER NOT NULL DEFAULT 0`, []); 465 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ${EventColumns.RRULE} TEXT`, []); 466 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ${EventColumns.RDATE} TEXT`, []); 467 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ${EventColumns.EXRULE} TEXT`, []); 468 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ${EventColumns.EXDATE} TEXT`, []); 469 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 470 `${EventColumns.ORIGINAL_ID} INTEGER`, []); 471 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 472 `${EventColumns.ORIGINAL_SYNC_ID} TEXT`, []); 473 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 474 `${EventColumns.ORIGINAL_INSTANCE_TIME} INTEGER`, []); 475 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 476 `${EventColumns.ORIGINAL_ALL_DAY} INTEGER`, []); 477 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 478 `${EventColumns.LAST_DATE} INTEGER`, []); 479 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 480 `${EventColumns.EVENT_TIME_STAMP} INTEGER NOT NULL DEFAULT 0`, []); 481 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 482 `${EventColumns.HAS_ATTENDEE_DATE} INTEGER NOT NULL DEFAULT 0`, []); 483 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 484 `${EventColumns.GUESTS_CAN_MODIFY} INTEGER NOT NULL DEFAULT 0`, []); 485 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 486 `${EventColumns.GUESTS_CAN_INVITE_OTHERS} INTEGER NOT NULL DEFAULT 1`, []); 487 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 488 `${EventColumns.GUESTS_CAN_SEE_GUESTS} INTEGER NOT NULL DEFAULT 1`, []); 489 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 490 `${EventColumns.ORGANIZER} STRING`, []); 491 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 492 `${EventColumns.IS_ORGANIZER} INTEGER`, []); 493 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 494 `${EventColumns.DELETED} INTEGER NOT NULL DEFAULT 0`, []); 495 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 496 `${EventColumns.EVENT_END_TIMEZONE} TEXT`, []); 497 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 498 `${EventColumns.CUSTOM_APP_PACKAGE} TEXT`, []); 499 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 500 `${EventColumns.CUSTOM_APP_URI} TEXT`, []); 501 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ${EventColumns.UID2445} TEXT`, []); 502 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 503 `${EventColumns.VERSION} INTEGER NOT NULL DEFAULT 0`, []); 504 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 505 `${EventColumns.EVENT_UUID} TEXT`, []); 506 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 507 `${EventColumns.HWEXT_ALERT_TYPE} INTEGER NOT NULL DEFAULT 0`, []); 508 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 509 `${EventColumns.IMPORTANT_EVENT_TYPE} INTEGER NOT NULL DEFAULT 0`, []); 510 await this.rdbStore?.executeSql(`ALTER TABLE EVENTS ADD COLUMN ` + 511 `${EventColumns.SERVICE.SERVICE_VERIFIED} INTEGER`, []); 512 await this.rdbStore?.executeSql(`ALTER TABLE EVENTS ADD COLUMN ` + 513 `${EventColumns.SERVICE.SERVICE_TYPE} TEXT`, []); 514 await this.rdbStore?.executeSql(`ALTER TABLE EVENTS ADD COLUMN ` + 515 `${EventColumns.SERVICE.SERVICE_CP_BZ_URI} TEXT`, []); 516 await this.rdbStore?.executeSql(`ALTER TABLE EVENTS ADD COLUMN ` + 517 `${EventColumns.SERVICE.SERVICE_CP_MNG_URI} TEXT`, []); 518 await this.rdbStore?.executeSql(`ALTER TABLE EVENTS ADD COLUMN ` + 519 `${EventColumns.SERVICE.SERVICE_DESCRIPTION} TEXT`, []); 520 await this.rdbStore?.executeSql(`ALTER TABLE EVENTS ADD COLUMN ` + 521 `${EventColumns.SERVICE.SERVICE_MIN_VERSION} INTEGER`, []); 522 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 523 `${EventColumns.SYNC_DATA1} TEXT`, []); 524 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 525 `${EventColumns.SYNC_DATA2} TEXT`, []); 526 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 527 `${EventColumns.SYNC_DATA3} TEXT`, []); 528 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 529 `${EventColumns.SYNC_DATA4} TEXT`, []); 530 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 531 `${EventColumns.SYNC_DATA5} TEXT`, []); 532 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 533 `${EventColumns.SYNC_DATA6} TEXT`, []); 534 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 535 `${EventColumns.SYNC_DATA7} TEXT`, []); 536 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 537 `${EventColumns.SYNC_DATA8} TEXT`, []); 538 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 539 `${EventColumns.SYNC_DATA9} TEXT`, []); 540 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 541 `${EventColumns.SYNC_DATA10} TEXT`, []); 542 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 543 `${EventColumns.KV_SYNC} INTEGER NOT NULL DEFAULT 0`, []); 544 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 545 `${EventColumns.KV_SYNC_TIME} INTEGER NOT NULL DEFAULT 0`, []); 546 await this.rdbStore?.executeSql(`ALTER TABLE Events ADD COLUMN ` + 547 `${EventColumns.CREATOR} TEXT NOT NULL`, []); 548 Log.log(TAG, 'call createEventsTable end'); 549 } catch (err) { 550 Log.error(TAG, `createEventsTable err:${err.message}`); 551 } 552 } 553 554 private async createDeleteEventTriggers() { 555 Log.log(TAG, 'call createDeleteEventTriggers start'); 556 let EVENTS_CLEANUP_TRIGGER_SQL = 557 `DELETE FROM ${InstancesColumns.TABLE_NAME}` + 558 ` WHERE ${InstancesColumns.EVENT_ID} = old.${EventColumns.ID};` + 559 `DELETE FROM ${EventsRawTimesColumns.TABLE_NAME}` + 560 ` WHERE ${EventsRawTimesColumns.EVENT_ID} = old.${EventColumns.ID};` + 561 `DELETE FROM ${AttendeesColumns.TABLE_NAME}` + 562 ` WHERE ${AttendeesColumns.EVENT_ID} = old.${EventColumns.ID};` + 563 `DELETE FROM ${ExtendCalendarEventColumns.TABLE_NAME}` + 564 ` WHERE ${ExtendCalendarEventColumns.HWEXT_EVENT_ID} = ` + 565 `old.${EventColumns.ID};` + 566 `DELETE FROM ${RemindersColumns.TABLE_NAME}` + 567 ` WHERE ${RemindersColumns.EVENT_ID} = old.${EventColumns.ID};` + 568 `DELETE FROM ${CalendarAlertsColumns.TABLE_NAME}` + 569 ` WHERE ${CalendarAlertsColumns.EVENT_ID} = old.${EventColumns.ID};` + 570 `DELETE FROM ${ExtendedPropertiesColumns.TABLE_NAME}` + 571 ` WHERE ${ExtendedPropertiesColumns.EVENT_ID} = old.${EventColumns.ID};` 572 573 let EVENTS_CLEANUP_TRIGGER = `CREATE TRIGGER events_cleanup_delete DELETE ON ` + 574 `${EventColumns.TABLE_NAME} BEGIN ${EVENTS_CLEANUP_TRIGGER_SQL} END`; 575 try { 576 await this.rdbStore?.executeSql(EVENTS_CLEANUP_TRIGGER, []); 577 Log.log(TAG, 'call createDeleteEventTriggers end'); 578 } catch (err) { 579 Log.error(TAG, `createDeleteEventTriggers err:${err?.message}`); 580 } 581 } 582 583 private async createColorsTriggers() { 584 Log.log(TAG, 'call createColorsTriggers start'); 585 let EVENT_UPDATE_COLOR_TRIGGER_SQL = `UPDATE ${EventColumns.TABLE_NAME}` + 586 ` SET eventColor=(SELECT ${ColorsColumns.COLOR} FROM ` + 587 `${ColorsColumns.TABLE_NAME}` + 588 ` WHERE ${ColorsColumns.ACCOUNT_NAME} = (SELECT ` + 589 `${CalendarsColumns.ACCOUNT_NAME}` + 590 ` FROM ${CalendarsColumns.TABLE_NAME} WHERE ${CalendarsColumns.ID} =` + 591 ` new.${EventColumns.CALENDAR_ID}) AND ${ColorsColumns.ACCOUNT_TYPE}` + 592 ` = (SELECT ${CalendarsColumns.ACCOUNT_TYPE} FROM ` + 593 `${CalendarsColumns.TABLE_NAME}` + 594 ` WHERE ${CalendarsColumns.ID} = new.${EventColumns.CALENDAR_ID})` + 595 ` AND ${ColorsColumns.COLOR_INDEX} = ` + 596 `new.${EventColumns.EVENT_COLOR_INDEX}` + 597 ` AND ${ColorsColumns.COLOR_TYPE} = 1)` + 598 ` WHERE ${EventColumns.ID} = old.${EventColumns.ID};`; 599 let CREATE_EVENT_COLOR_UPDATE_TRIGGER = `CREATE TRIGGER ` + 600 `event_color_update UPDATE OF ${EventColumns.EVENT_COLOR_INDEX} ON ` + 601 `${EventColumns.TABLE_NAME} WHEN new.${EventColumns.EVENT_COLOR_INDEX} ` + 602 `NOT NULL BEGIN ${EVENT_UPDATE_COLOR_TRIGGER_SQL} END`; 603 604 let CALENDAR_UPDATE_COLOR_TRIGGER_SQL = `UPDATE ${CalendarsColumns.TABLE_NAME} ` + 605 `SET ${CalendarsColumns.CALENDAR_COLOR} = (SELECT ` + 606 `${ColorsColumns.COLOR} FROM ${ColorsColumns.TABLE_NAME} WHERE ` + 607 `${ColorsColumns.ACCOUNT_NAME} = ` + 608 `new.${CalendarsColumns.ACCOUNT_NAME} AND ` + 609 `${ColorsColumns.ACCOUNT_TYPE} = ` + 610 `new.${CalendarsColumns.ACCOUNT_TYPE} AND ` + 611 `${ColorsColumns.COLOR_INDEX} = ` + 612 `new.${CalendarsColumns.CALENDAR_COLOR_INDEX} AND ` + 613 `${ColorsColumns.COLOR_TYPE} = 0) ` + 614 ` WHERE ${CalendarsColumns.ID} = old.${CalendarsColumns.ID};`; 615 let CREATE_CALENDAR_COLOR_UPDATE_TRIGGER = `CREATE TRIGGER ` + 616 `calendar_color_update UPDATE OF ${CalendarsColumns.CALENDAR_COLOR_INDEX}` + 617 ` ON ${CalendarsColumns.TABLE_NAME} WHEN` + 618 ` new.${CalendarsColumns.CALENDAR_COLOR_INDEX} NOT NULL` + 619 ` BEGIN ${CALENDAR_UPDATE_COLOR_TRIGGER_SQL} END`; 620 621 try { 622 Log.log(TAG, 'call CREATE_EVENT_COLOR_UPDATE_TRIGGER'); 623 await this.rdbStore?.executeSql(CREATE_EVENT_COLOR_UPDATE_TRIGGER, []); 624 Log.log(TAG, 'call CREATE_CALENDAR_COLOR_UPDATE_TRIGGER'); 625 await this.rdbStore?.executeSql(CREATE_CALENDAR_COLOR_UPDATE_TRIGGER, []); 626 Log.log(TAG, 'call createColorsTriggers end'); 627 } catch (err) { 628 Log.error(TAG, `createColorsTriggers err:${err?.message}`); 629 } 630 631 } 632 633 private async createCalendarCleanupTrigger() { 634 Log.log(TAG, 'call createCalendarCleanupTrigger start'); 635 let CALENDAR_CLEANUP_TRIGGER_SQL = `DELETE FROM ` + 636 `${EventColumns.TABLE_NAME} WHERE ` + 637 `${EventColumns.CALENDAR_ID} = old.${EventColumns.ID};`; 638 let CALENDAR_CLEANUP_TRIGGER = `CREATE TRIGGER calendar_cleanup DELETE ON ` + 639 `${CalendarsColumns.TABLE_NAME} ` + 640 `BEGIN ${CALENDAR_CLEANUP_TRIGGER_SQL} END`; 641 try { 642 await this.rdbStore?.executeSql(CALENDAR_CLEANUP_TRIGGER, []); 643 Log.log(TAG, 'call createCalendarCleanupTrigger end'); 644 } catch (err) { 645 Log.error(TAG, `createCalendarCleanupTrigger err:${err?.message}`); 646 } 647 } 648 649 private async createSyncIdUpdateTrigger() { 650 let EVENTS_ORIGINAL_SYNC_TRIGGER_SQL = `UPDATE ${EventColumns.TABLE_NAME}` + 651 ` SET ${EventColumns.ORIGINAL_SYNC_ID} = ` + 652 `new.${EventColumns.SYNC_ID}` + 653 ` WHERE ${EventColumns.ORIGINAL_ID} =old.${EventColumns.ID};`; 654 let CREATE_SYNC_ID_UPDATE_TRIGGER = `CREATE TRIGGER original_sync_update` + 655 ` UPDATE OF ${EventColumns.SYNC_ID}` + 656 ` ON ${EventColumns.TABLE_NAME}` + 657 ` BEGIN ${EVENTS_ORIGINAL_SYNC_TRIGGER_SQL} END`; 658 try { 659 Log.log(TAG, 'call createSyncIdUpdateTrigger start'); 660 await this.rdbStore?.executeSql(CREATE_SYNC_ID_UPDATE_TRIGGER, []); 661 Log.log(TAG, 'call createSyncIdUpdateTrigger end'); 662 } catch (err) { 663 Log.error(TAG, `createSyncIdUpdateTrigger err:${err?.message}`); 664 } 665 } 666} 667 668export default CalendarDataHelper;