blob: b654f50ed582a99eeda861d894d6b67546259f14 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.adservices.data.measurement;
import com.android.adservices.data.measurement.migration.MeasurementTablesDeprecated;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* Container class for Measurement PPAPI table definitions and constants.
*/
public final class MeasurementTables {
public static final String MSMT_TABLE_PREFIX = "msmt_";
public static final String INDEX_PREFIX = "idx_";
/**
* Array of all Measurement related tables. The AdTechUrls table is not included in the
* Measurement tables because it will be used for a more general purpose.
*/
// TODO(b/237306788): Move AdTechUrls tables to common tables and add method to delete common
// tables.
public static final String[] ALL_MSMT_TABLES = {
MeasurementTables.SourceContract.TABLE,
MeasurementTables.TriggerContract.TABLE,
MeasurementTables.EventReportContract.TABLE,
MeasurementTables.AggregateReport.TABLE,
MeasurementTables.AggregateEncryptionKey.TABLE,
MeasurementTables.AttributionContract.TABLE,
MeasurementTables.AsyncRegistrationContract.TABLE,
MeasurementTables.DebugReportContract.TABLE,
MeasurementTables.XnaIgnoredSourcesContract.TABLE
};
/** Contract for asynchronous Registration. */
public interface AsyncRegistrationContract {
String TABLE = MSMT_TABLE_PREFIX + "async_registration_contract";
String ID = "_id";
String ENROLLMENT_ID = "enrollment_id";
String REGISTRATION_URI = "registration_uri";
String TOP_ORIGIN = "top_origin";
String SOURCE_TYPE = "source_type";
String REDIRECT_TYPE = "redirect_type";
String REDIRECT_COUNT = "redirect_count";
String REGISTRANT = "registrant";
String REQUEST_TIME = "request_time";
String RETRY_COUNT = "retry_count";
String LAST_PROCESSING_TIME = "last_processing_time";
String TYPE = "type";
String WEB_DESTINATION = "web_destination";
String OS_DESTINATION = "os_destination";
String VERIFIED_DESTINATION = "verified_destination";
String DEBUG_KEY_ALLOWED = "debug_key_allowed";
String AD_ID_PERMISSION = "ad_id_permission";
String REGISTRATION_ID = "registration_id";
}
/** Contract for Source. */
public interface SourceContract {
String TABLE = MSMT_TABLE_PREFIX + "source";
String ID = "_id";
String EVENT_ID = "event_id";
String PUBLISHER = "publisher";
String PUBLISHER_TYPE = "publisher_type";
String APP_DESTINATION = "app_destination";
String WEB_DESTINATION = "web_destination";
String EVENT_REPORT_DEDUP_KEYS = "event_report_dedup_keys";
String AGGREGATE_REPORT_DEDUP_KEYS = "aggregate_report_dedup_keys";
String EVENT_TIME = "event_time";
String EXPIRY_TIME = "expiry_time";
String EVENT_REPORT_WINDOW = "event_report_window";
String AGGREGATABLE_REPORT_WINDOW = "aggregatable_report_window";
String PRIORITY = "priority";
String STATUS = "status";
String SOURCE_TYPE = "source_type";
String ENROLLMENT_ID = "enrollment_id";
String REGISTRANT = "registrant";
String ATTRIBUTION_MODE = "attribution_mode";
String INSTALL_ATTRIBUTION_WINDOW = "install_attribution_window";
String INSTALL_COOLDOWN_WINDOW = "install_cooldown_window";
String IS_INSTALL_ATTRIBUTED = "is_install_attributed";
String FILTER_DATA = "filter_data";
String AGGREGATE_SOURCE = "aggregate_source";
String AGGREGATE_CONTRIBUTIONS = "aggregate_contributions";
String DEBUG_KEY = "debug_key";
String DEBUG_REPORTING = "debug_reporting";
String AD_ID_PERMISSION = "ad_id_permission";
String AR_DEBUG_PERMISSION = "ar_debug_permission";
String REGISTRATION_ID = "registration_id";
String SHARED_AGGREGATION_KEYS = "shared_aggregation_keys";
String INSTALL_TIME = "install_time";
}
/** Contract for Trigger. */
public interface TriggerContract {
String TABLE = MSMT_TABLE_PREFIX + "trigger";
String ID = "_id";
String ATTRIBUTION_DESTINATION = "attribution_destination";
String DESTINATION_TYPE = "destination_type";
String TRIGGER_TIME = "trigger_time";
String STATUS = "status";
String REGISTRANT = "registrant";
String ENROLLMENT_ID = "enrollment_id";
String EVENT_TRIGGERS = "event_triggers";
String AGGREGATE_TRIGGER_DATA = "aggregate_trigger_data";
String AGGREGATE_VALUES = "aggregate_values";
String AGGREGATABLE_DEDUPLICATION_KEYS = "aggregatable_deduplication_keys";
String FILTERS = "filters";
String NOT_FILTERS = "not_filters";
String DEBUG_KEY = "debug_key";
String DEBUG_REPORTING = "debug_reporting";
String AD_ID_PERMISSION = "ad_id_permission";
String AR_DEBUG_PERMISSION = "ar_debug_permission";
String ATTRIBUTION_CONFIG = "attribution_config";
String X_NETWORK_KEY_MAPPING = "x_network_key_mapping";
}
/** Contract for EventReport. */
public interface EventReportContract {
String TABLE = MSMT_TABLE_PREFIX + "event_report";
String ID = "_id";
String SOURCE_EVENT_ID = "source_event_id";
String ATTRIBUTION_DESTINATION = "attribution_destination";
String REPORT_TIME = "report_time";
String TRIGGER_DATA = "trigger_data";
String TRIGGER_PRIORITY = "trigger_priority";
String TRIGGER_DEDUP_KEY = "trigger_dedup_key";
String TRIGGER_TIME = "trigger_time";
String STATUS = "status";
String DEBUG_REPORT_STATUS = "debug_report_status";
String SOURCE_TYPE = "source_type";
String ENROLLMENT_ID = "enrollment_id";
String RANDOMIZED_TRIGGER_RATE = "randomized_trigger_rate";
String SOURCE_DEBUG_KEY = "source_debug_key";
String TRIGGER_DEBUG_KEY = "trigger_debug_key";
String SOURCE_ID = "source_id";
String TRIGGER_ID = "trigger_id";
}
/** Contract for Attribution rate limit. */
public interface AttributionContract {
String TABLE = MSMT_TABLE_PREFIX + "attribution";
String ID = "_id";
String SOURCE_SITE = "source_site";
String SOURCE_ORIGIN = "source_origin";
String DESTINATION_SITE = "attribution_destination_site";
String DESTINATION_ORIGIN = "destination_origin";
String TRIGGER_TIME = "trigger_time";
String REGISTRANT = "registrant";
String ENROLLMENT_ID = "enrollment_id";
String SOURCE_ID = "source_id";
String TRIGGER_ID = "trigger_id";
}
/** Contract for Unencrypted aggregate payload. */
public interface AggregateReport {
String TABLE = MSMT_TABLE_PREFIX + "aggregate_report";
String ID = "_id";
String PUBLISHER = "publisher";
String ATTRIBUTION_DESTINATION = "attribution_destination";
String SOURCE_REGISTRATION_TIME = "source_registration_time";
String SCHEDULED_REPORT_TIME = "scheduled_report_time";
String ENROLLMENT_ID = "enrollment_id";
String DEBUG_CLEARTEXT_PAYLOAD = "debug_cleartext_payload";
String STATUS = "status";
String DEBUG_REPORT_STATUS = "debug_report_status";
String API_VERSION = "api_version";
String SOURCE_DEBUG_KEY = "source_debug_key";
String TRIGGER_DEBUG_KEY = "trigger_debug_key";
String SOURCE_ID = "source_id";
String TRIGGER_ID = "trigger_id";
}
/** Contract for aggregate encryption key. */
public interface AggregateEncryptionKey {
String TABLE = MSMT_TABLE_PREFIX + "aggregate_encryption_key";
String ID = "_id";
String KEY_ID = "key_id";
String PUBLIC_KEY = "public_key";
String EXPIRY = "expiry";
}
/** Contract for debug reports. */
public interface DebugReportContract {
String TABLE = MSMT_TABLE_PREFIX + "debug_report";
String ID = "_id";
String TYPE = "type";
String BODY = "body";
String ENROLLMENT_ID = "enrollment_id";
}
/** Contract for xna ignored sources. */
public interface XnaIgnoredSourcesContract {
String TABLE = MSMT_TABLE_PREFIX + "xna_ignored_sources";
String SOURCE_ID = "source_id";
String ENROLLMENT_ID = "enrollment_id";
}
public static final String CREATE_TABLE_ASYNC_REGISTRATION_V1 =
"CREATE TABLE "
+ AsyncRegistrationContract.TABLE
+ " ("
+ AsyncRegistrationContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AsyncRegistrationContract.REGISTRATION_URI
+ " TEXT, "
+ AsyncRegistrationContract.WEB_DESTINATION
+ " TEXT, "
+ AsyncRegistrationContract.OS_DESTINATION
+ " TEXT, "
+ AsyncRegistrationContract.VERIFIED_DESTINATION
+ " TEXT, "
+ AsyncRegistrationContract.TOP_ORIGIN
+ " TEXT, "
+ MeasurementTablesDeprecated.AsyncRegistration.REDIRECT
+ " INTEGER, "
+ MeasurementTablesDeprecated.AsyncRegistration.INPUT_EVENT
+ " INTEGER, "
+ AsyncRegistrationContract.REGISTRANT
+ " TEXT, "
+ MeasurementTablesDeprecated.AsyncRegistration.SCHEDULED_TIME
+ " INTEGER, "
+ AsyncRegistrationContract.RETRY_COUNT
+ " INTEGER, "
+ AsyncRegistrationContract.LAST_PROCESSING_TIME
+ " INTEGER, "
+ AsyncRegistrationContract.TYPE
+ " INTEGER "
+ ")";
public static final String CREATE_TABLE_ASYNC_REGISTRATION_LATEST =
"CREATE TABLE "
+ AsyncRegistrationContract.TABLE
+ " ("
+ AsyncRegistrationContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AsyncRegistrationContract.ENROLLMENT_ID
+ " TEXT, "
+ AsyncRegistrationContract.REGISTRATION_URI
+ " TEXT, "
+ AsyncRegistrationContract.WEB_DESTINATION
+ " TEXT, "
+ AsyncRegistrationContract.OS_DESTINATION
+ " TEXT, "
+ AsyncRegistrationContract.VERIFIED_DESTINATION
+ " TEXT, "
+ AsyncRegistrationContract.TOP_ORIGIN
+ " TEXT, "
+ AsyncRegistrationContract.REDIRECT_TYPE
+ " INTEGER, "
+ AsyncRegistrationContract.REDIRECT_COUNT
+ " INTEGER, "
+ AsyncRegistrationContract.SOURCE_TYPE
+ " INTEGER, "
+ AsyncRegistrationContract.REGISTRANT
+ " TEXT, "
+ AsyncRegistrationContract.REQUEST_TIME
+ " INTEGER, "
+ AsyncRegistrationContract.RETRY_COUNT
+ " INTEGER, "
+ AsyncRegistrationContract.LAST_PROCESSING_TIME
+ " INTEGER, "
+ AsyncRegistrationContract.TYPE
+ " INTEGER, "
+ AsyncRegistrationContract.DEBUG_KEY_ALLOWED
+ " INTEGER, "
+ AsyncRegistrationContract.AD_ID_PERMISSION
+ " INTEGER, "
+ AsyncRegistrationContract.REGISTRATION_ID
+ " TEXT "
+ ")";
public static final String CREATE_TABLE_SOURCE_V1 =
"CREATE TABLE "
+ SourceContract.TABLE
+ " ("
+ SourceContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ SourceContract.EVENT_ID
+ " INTEGER, "
+ SourceContract.PUBLISHER
+ " TEXT, "
+ SourceContract.PUBLISHER_TYPE
+ " INTEGER, "
+ SourceContract.APP_DESTINATION
+ " TEXT, "
+ SourceContract.ENROLLMENT_ID
+ " TEXT, "
+ SourceContract.EVENT_TIME
+ " INTEGER, "
+ SourceContract.EXPIRY_TIME
+ " INTEGER, "
+ SourceContract.PRIORITY
+ " INTEGER, "
+ SourceContract.STATUS
+ " INTEGER, "
+ MeasurementTablesDeprecated.Source.DEDUP_KEYS
+ " TEXT, "
+ SourceContract.SOURCE_TYPE
+ " TEXT, "
+ SourceContract.REGISTRANT
+ " TEXT, "
+ SourceContract.ATTRIBUTION_MODE
+ " INTEGER, "
+ SourceContract.INSTALL_ATTRIBUTION_WINDOW
+ " INTEGER, "
+ SourceContract.INSTALL_COOLDOWN_WINDOW
+ " INTEGER, "
+ SourceContract.IS_INSTALL_ATTRIBUTED
+ " INTEGER, "
+ SourceContract.FILTER_DATA
+ " TEXT, "
+ SourceContract.AGGREGATE_SOURCE
+ " TEXT, "
+ SourceContract.AGGREGATE_CONTRIBUTIONS
+ " INTEGER, "
+ SourceContract.WEB_DESTINATION
+ " TEXT, "
+ SourceContract.DEBUG_KEY
+ " INTEGER "
+ ")";
public static final String CREATE_TABLE_SOURCE_LATEST =
"CREATE TABLE "
+ SourceContract.TABLE
+ " ("
+ SourceContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ SourceContract.EVENT_ID
+ " INTEGER, "
+ SourceContract.PUBLISHER
+ " TEXT, "
+ SourceContract.PUBLISHER_TYPE
+ " INTEGER, "
+ SourceContract.APP_DESTINATION
+ " TEXT, "
+ SourceContract.ENROLLMENT_ID
+ " TEXT, "
+ SourceContract.EVENT_TIME
+ " INTEGER, "
+ SourceContract.EXPIRY_TIME
+ " INTEGER, "
+ SourceContract.EVENT_REPORT_WINDOW
+ " INTEGER, "
+ SourceContract.AGGREGATABLE_REPORT_WINDOW
+ " INTEGER, "
+ SourceContract.PRIORITY
+ " INTEGER, "
+ SourceContract.STATUS
+ " INTEGER, "
+ SourceContract.EVENT_REPORT_DEDUP_KEYS
+ " TEXT, "
+ SourceContract.AGGREGATE_REPORT_DEDUP_KEYS
+ " TEXT, "
+ SourceContract.SOURCE_TYPE
+ " TEXT, "
+ SourceContract.REGISTRANT
+ " TEXT, "
+ SourceContract.ATTRIBUTION_MODE
+ " INTEGER, "
+ SourceContract.INSTALL_ATTRIBUTION_WINDOW
+ " INTEGER, "
+ SourceContract.INSTALL_COOLDOWN_WINDOW
+ " INTEGER, "
+ SourceContract.IS_INSTALL_ATTRIBUTED
+ " INTEGER, "
+ SourceContract.FILTER_DATA
+ " TEXT, "
+ SourceContract.AGGREGATE_SOURCE
+ " TEXT, "
+ SourceContract.AGGREGATE_CONTRIBUTIONS
+ " INTEGER, "
+ SourceContract.WEB_DESTINATION
+ " TEXT, "
+ SourceContract.DEBUG_KEY
+ " INTEGER , "
+ SourceContract.DEBUG_REPORTING
+ " INTEGER, "
+ SourceContract.AD_ID_PERMISSION
+ " INTEGER, "
+ SourceContract.AR_DEBUG_PERMISSION
+ " INTEGER, "
+ SourceContract.REGISTRATION_ID
+ " TEXT, "
+ SourceContract.SHARED_AGGREGATION_KEYS
+ " TEXT, "
+ SourceContract.INSTALL_TIME
+ " INTEGER "
+ ")";
public static final String CREATE_TABLE_TRIGGER_V1 =
"CREATE TABLE "
+ TriggerContract.TABLE
+ " ("
+ TriggerContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ TriggerContract.ATTRIBUTION_DESTINATION
+ " TEXT, "
+ TriggerContract.DESTINATION_TYPE
+ " INTEGER, "
+ TriggerContract.ENROLLMENT_ID
+ " TEXT, "
+ TriggerContract.TRIGGER_TIME
+ " INTEGER, "
+ TriggerContract.EVENT_TRIGGERS
+ " TEXT, "
+ TriggerContract.STATUS
+ " INTEGER, "
+ TriggerContract.REGISTRANT
+ " TEXT, "
+ TriggerContract.AGGREGATE_TRIGGER_DATA
+ " TEXT, "
+ TriggerContract.AGGREGATE_VALUES
+ " TEXT, "
+ TriggerContract.FILTERS
+ " TEXT, "
+ TriggerContract.DEBUG_KEY
+ " INTEGER "
+ ")";
public static final String CREATE_TABLE_TRIGGER_LATEST =
"CREATE TABLE "
+ TriggerContract.TABLE
+ " ("
+ TriggerContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ TriggerContract.ATTRIBUTION_DESTINATION
+ " TEXT, "
+ TriggerContract.DESTINATION_TYPE
+ " INTEGER, "
+ TriggerContract.ENROLLMENT_ID
+ " TEXT, "
+ TriggerContract.TRIGGER_TIME
+ " INTEGER, "
+ TriggerContract.EVENT_TRIGGERS
+ " TEXT, "
+ TriggerContract.STATUS
+ " INTEGER, "
+ TriggerContract.REGISTRANT
+ " TEXT, "
+ TriggerContract.AGGREGATE_TRIGGER_DATA
+ " TEXT, "
+ TriggerContract.AGGREGATE_VALUES
+ " TEXT, "
+ TriggerContract.AGGREGATABLE_DEDUPLICATION_KEYS
+ " TEXT, "
+ TriggerContract.FILTERS
+ " TEXT, "
+ TriggerContract.NOT_FILTERS
+ " TEXT, "
+ TriggerContract.DEBUG_KEY
+ " INTEGER, "
+ TriggerContract.DEBUG_REPORTING
+ " INTEGER, "
+ TriggerContract.AD_ID_PERMISSION
+ " INTEGER, "
+ TriggerContract.AR_DEBUG_PERMISSION
+ " INTEGER, "
+ TriggerContract.ATTRIBUTION_CONFIG
+ " TEXT, "
+ TriggerContract.X_NETWORK_KEY_MAPPING
+ " TEXT "
+ ")";
public static final String CREATE_TABLE_EVENT_REPORT_V1 =
"CREATE TABLE "
+ EventReportContract.TABLE
+ " ("
+ EventReportContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ EventReportContract.SOURCE_ID
+ " INTEGER, "
+ EventReportContract.ENROLLMENT_ID
+ " TEXT, "
+ EventReportContract.ATTRIBUTION_DESTINATION
+ " TEXT, "
+ EventReportContract.REPORT_TIME
+ " INTEGER, "
+ EventReportContract.TRIGGER_DATA
+ " INTEGER, "
+ EventReportContract.TRIGGER_PRIORITY
+ " INTEGER, "
+ EventReportContract.TRIGGER_DEDUP_KEY
+ " INTEGER, "
+ EventReportContract.TRIGGER_TIME
+ " INTEGER, "
+ EventReportContract.STATUS
+ " INTEGER, "
+ EventReportContract.SOURCE_TYPE
+ " TEXT, "
+ EventReportContract.RANDOMIZED_TRIGGER_RATE
+ " DOUBLE "
+ ")";
public static final String CREATE_TABLE_EVENT_REPORT_LATEST =
"CREATE TABLE "
+ EventReportContract.TABLE
+ " ("
+ EventReportContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ EventReportContract.SOURCE_EVENT_ID
+ " INTEGER, "
+ EventReportContract.ENROLLMENT_ID
+ " TEXT, "
+ EventReportContract.ATTRIBUTION_DESTINATION
+ " TEXT, "
+ EventReportContract.REPORT_TIME
+ " INTEGER, "
+ EventReportContract.TRIGGER_DATA
+ " INTEGER, "
+ EventReportContract.TRIGGER_PRIORITY
+ " INTEGER, "
+ EventReportContract.TRIGGER_DEDUP_KEY
+ " INTEGER, "
+ EventReportContract.TRIGGER_TIME
+ " INTEGER, "
+ EventReportContract.STATUS
+ " INTEGER, "
+ EventReportContract.DEBUG_REPORT_STATUS
+ " INTEGER, "
+ EventReportContract.SOURCE_TYPE
+ " TEXT, "
+ EventReportContract.RANDOMIZED_TRIGGER_RATE
+ " DOUBLE, "
+ EventReportContract.SOURCE_DEBUG_KEY
+ " INTEGER, "
+ EventReportContract.TRIGGER_DEBUG_KEY
+ " INTEGER, "
+ EventReportContract.SOURCE_ID
+ " TEXT, "
+ EventReportContract.TRIGGER_ID
+ " TEXT, "
+ "FOREIGN KEY ("
+ EventReportContract.SOURCE_ID
+ ") REFERENCES "
+ SourceContract.TABLE
+ "("
+ SourceContract.ID
+ ") ON DELETE CASCADE, "
+ "FOREIGN KEY ("
+ EventReportContract.TRIGGER_ID
+ ") REFERENCES "
+ TriggerContract.TABLE
+ "("
+ TriggerContract.ID
+ ") ON DELETE CASCADE"
+ ")";
public static final String CREATE_TABLE_ATTRIBUTION_V1 =
"CREATE TABLE "
+ AttributionContract.TABLE
+ " ("
+ AttributionContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AttributionContract.SOURCE_SITE
+ " TEXT, "
+ AttributionContract.SOURCE_ORIGIN
+ " TEXT, "
+ AttributionContract.DESTINATION_SITE
+ " TEXT, "
+ AttributionContract.DESTINATION_ORIGIN
+ " TEXT, "
+ AttributionContract.ENROLLMENT_ID
+ " TEXT, "
+ AttributionContract.TRIGGER_TIME
+ " INTEGER, "
+ AttributionContract.REGISTRANT
+ " TEXT "
+ ")";
public static final String CREATE_TABLE_ATTRIBUTION_LATEST =
"CREATE TABLE "
+ AttributionContract.TABLE
+ " ("
+ AttributionContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AttributionContract.SOURCE_SITE
+ " TEXT, "
+ AttributionContract.SOURCE_ORIGIN
+ " TEXT, "
+ AttributionContract.DESTINATION_SITE
+ " TEXT, "
+ AttributionContract.DESTINATION_ORIGIN
+ " TEXT, "
+ AttributionContract.ENROLLMENT_ID
+ " TEXT, "
+ AttributionContract.TRIGGER_TIME
+ " INTEGER, "
+ AttributionContract.REGISTRANT
+ " TEXT, "
+ AttributionContract.SOURCE_ID
+ " TEXT, "
+ AttributionContract.TRIGGER_ID
+ " TEXT, "
+ "FOREIGN KEY ("
+ AttributionContract.SOURCE_ID
+ ") REFERENCES "
+ SourceContract.TABLE
+ "("
+ SourceContract.ID
+ ") ON DELETE CASCADE, "
+ "FOREIGN KEY ("
+ AttributionContract.TRIGGER_ID
+ ") REFERENCES "
+ TriggerContract.TABLE
+ "("
+ TriggerContract.ID
+ ") ON DELETE CASCADE"
+ ")";
public static final String CREATE_TABLE_AGGREGATE_REPORT_V1 =
"CREATE TABLE "
+ AggregateReport.TABLE
+ " ("
+ AggregateReport.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AggregateReport.PUBLISHER
+ " TEXT, "
+ AggregateReport.ATTRIBUTION_DESTINATION
+ " TEXT, "
+ AggregateReport.SOURCE_REGISTRATION_TIME
+ " INTEGER, "
+ AggregateReport.SCHEDULED_REPORT_TIME
+ " INTEGER, "
+ AggregateReport.ENROLLMENT_ID
+ " TEXT, "
+ AggregateReport.DEBUG_CLEARTEXT_PAYLOAD
+ " TEXT, "
+ AggregateReport.STATUS
+ " INTEGER, "
+ AggregateReport.API_VERSION
+ " TEXT "
+ ")";
public static final String CREATE_TABLE_AGGREGATE_REPORT_LATEST =
"CREATE TABLE "
+ AggregateReport.TABLE
+ " ("
+ AggregateReport.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AggregateReport.PUBLISHER
+ " TEXT, "
+ AggregateReport.ATTRIBUTION_DESTINATION
+ " TEXT, "
+ AggregateReport.SOURCE_REGISTRATION_TIME
+ " INTEGER, "
+ AggregateReport.SCHEDULED_REPORT_TIME
+ " INTEGER, "
+ AggregateReport.ENROLLMENT_ID
+ " TEXT, "
+ AggregateReport.DEBUG_CLEARTEXT_PAYLOAD
+ " TEXT, "
+ AggregateReport.STATUS
+ " INTEGER, "
+ AggregateReport.DEBUG_REPORT_STATUS
+ " INTEGER, "
+ AggregateReport.API_VERSION
+ " TEXT, "
+ AggregateReport.SOURCE_DEBUG_KEY
+ " INTEGER, "
+ AggregateReport.TRIGGER_DEBUG_KEY
+ " INTEGER, "
+ AggregateReport.SOURCE_ID
+ " TEXT, "
+ AggregateReport.TRIGGER_ID
+ " TEXT, "
+ "FOREIGN KEY ("
+ AggregateReport.SOURCE_ID
+ ") REFERENCES "
+ SourceContract.TABLE
+ "("
+ SourceContract.ID
+ ") ON DELETE CASCADE "
+ "FOREIGN KEY ("
+ AggregateReport.TRIGGER_ID
+ ") REFERENCES "
+ TriggerContract.TABLE
+ "("
+ TriggerContract.ID
+ ") ON DELETE CASCADE"
+ ")";
public static final String CREATE_TABLE_AGGREGATE_ENCRYPTION_KEY_V1 =
"CREATE TABLE "
+ AggregateEncryptionKey.TABLE
+ " ("
+ AggregateEncryptionKey.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ AggregateEncryptionKey.KEY_ID
+ " TEXT, "
+ AggregateEncryptionKey.PUBLIC_KEY
+ " TEXT, "
+ AggregateEncryptionKey.EXPIRY
+ " INTEGER "
+ ")";
public static final String CREATE_TABLE_DEBUG_REPORT_LATEST =
"CREATE TABLE IF NOT EXISTS "
+ DebugReportContract.TABLE
+ " ("
+ DebugReportContract.ID
+ " TEXT PRIMARY KEY NOT NULL, "
+ DebugReportContract.TYPE
+ " TEXT, "
+ DebugReportContract.BODY
+ " TEXT, "
+ DebugReportContract.ENROLLMENT_ID
+ " TEXT "
+ ")";
public static final String CREATE_TABLE_XNA_IGNORED_SOURCES_V1 =
"CREATE TABLE "
+ XnaIgnoredSourcesContract.TABLE
+ " ("
+ XnaIgnoredSourcesContract.SOURCE_ID
+ " TEXT NOT NULL, "
+ XnaIgnoredSourcesContract.ENROLLMENT_ID
+ " TEXT NOT NULL, "
+ "FOREIGN KEY ("
+ XnaIgnoredSourcesContract.SOURCE_ID
+ ") REFERENCES "
+ SourceContract.TABLE
+ "("
+ SourceContract.ID
+ ") ON DELETE CASCADE"
+ ")";
public static final String[] CREATE_INDEXES = {
"CREATE INDEX "
+ INDEX_PREFIX
+ SourceContract.TABLE
+ "_ad_ei_et "
+ "ON "
+ SourceContract.TABLE
+ "( "
+ SourceContract.APP_DESTINATION
+ ", "
+ SourceContract.ENROLLMENT_ID
+ ", "
+ SourceContract.EXPIRY_TIME
+ " DESC "
+ ")",
"CREATE INDEX "
+ INDEX_PREFIX
+ SourceContract.TABLE
+ "_et "
+ "ON "
+ SourceContract.TABLE
+ "("
+ SourceContract.EXPIRY_TIME
+ ")",
"CREATE INDEX "
+ INDEX_PREFIX
+ SourceContract.TABLE
+ "_p_ad_wd_s_et "
+ "ON "
+ SourceContract.TABLE
+ "("
+ SourceContract.PUBLISHER
+ ", "
+ SourceContract.APP_DESTINATION
+ ", "
+ SourceContract.WEB_DESTINATION
+ ", "
+ SourceContract.STATUS
+ ", "
+ SourceContract.EVENT_TIME
+ ")",
"CREATE INDEX "
+ INDEX_PREFIX
+ TriggerContract.TABLE
+ "_ad_ei_tt "
+ "ON "
+ TriggerContract.TABLE
+ "( "
+ TriggerContract.ATTRIBUTION_DESTINATION
+ ", "
+ TriggerContract.ENROLLMENT_ID
+ ", "
+ TriggerContract.TRIGGER_TIME
+ " ASC)",
"CREATE INDEX "
+ INDEX_PREFIX
+ TriggerContract.TABLE
+ "_tt "
+ "ON "
+ TriggerContract.TABLE
+ "("
+ TriggerContract.TRIGGER_TIME
+ ")",
"CREATE INDEX "
+ INDEX_PREFIX
+ AttributionContract.TABLE
+ "_ss_so_ds_do_ei_tt"
+ " ON "
+ AttributionContract.TABLE
+ "("
+ AttributionContract.SOURCE_SITE
+ ", "
+ AttributionContract.SOURCE_ORIGIN
+ ", "
+ AttributionContract.DESTINATION_SITE
+ ", "
+ AttributionContract.DESTINATION_ORIGIN
+ ", "
+ AttributionContract.ENROLLMENT_ID
+ ", "
+ AttributionContract.TRIGGER_TIME
+ ")"
};
// Consolidated list of create statements for all tables.
public static final List<String> CREATE_STATEMENTS =
Collections.unmodifiableList(
Arrays.asList(
CREATE_TABLE_SOURCE_LATEST,
CREATE_TABLE_TRIGGER_LATEST,
CREATE_TABLE_EVENT_REPORT_LATEST,
CREATE_TABLE_ATTRIBUTION_LATEST,
CREATE_TABLE_AGGREGATE_REPORT_LATEST,
CREATE_TABLE_AGGREGATE_ENCRYPTION_KEY_V1,
CREATE_TABLE_ASYNC_REGISTRATION_LATEST,
CREATE_TABLE_DEBUG_REPORT_LATEST,
CREATE_TABLE_XNA_IGNORED_SOURCES_V1));
// Private constructor to prevent instantiation.
private MeasurementTables() {
}
}