provider "snowflake" {
  account_name = "delphi"
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/snowflake/delphi/databases/facts/additional_roles/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

module "table_database_role_prod" {
  for_each = toset([
    "APPLE_PODCASTS_CONTENT_PERFORMANCE",
    "APPLE_PODCASTS_SALES_SUMMARY",
    "APPLE_PODCASTS_SALES_SUMMARY_MONTHLY",
    "APPLE_PODCASTS_SALES_SUMMARY_WEEKLY",
    "APPLE_PODCASTS_SUBSCRIPTION_EVENTS",
    "APPLE_PODCASTS_SUBSCRIPTION_EVENTS_MONTHLY",
    "APPLE_PODCASTS_SUBSCRIPTION_EVENTS_WEEKLY",
    "APPLE_PODCASTS_SUBSCRIPTION_SNAPSHOT",
    "APPLE_PODCASTS_SUBSCRIPTION_SNAPSHOT_MONTHLY",
    "APPLE_PODCASTS_SUBSCRIPTION_SNAPSHOT_WEEKLY",
    "CHARTABLE_PODCAST_METADATA",
    "CHARTABLE_PODCAST_RANKING_PEAKS",
    "CHARTABLE_PODCAST_RANKINGS",
    "CHARTABLE_PODCAST_REVIEWS",
    "IDENTITY",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  table    = each.value
}

module "view_database_role_prod" {
  for_each = toset([
    "PODCAST_EPISODE_METADATA_VIEW",
    "PODCAST_PODCAST_METADATA_VIEW",
    "STAGING_RAW_APPLE_MUSIC_CONTAINER",
    "STAGING_RAW_APPLE_MUSIC_SUMMARY_STREAMS",
    "STAGING_RAW_SPOTIFY_V2",
    "STAGING_RAW_TIKTOK",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/view_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  view     = each.value
}

module "table_database_role_SME_LABELCOPY_INGEST" {
  for_each = toset(["PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
  table    = "SME_LABELCOPY_INGEST"
}

module "table_database_role_DIM_TRACK" {
  for_each = toset(["PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
  table    = "DIM_TRACK"
}

module "table_database_role_ISRC_AVAILABILITY_TEST_RESULTS" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "ISRC_AVAILABILITY_TEST_RESULTS"
  enable_write_privileges = true
}

module "table_database_role_prod_ISRC_AVAILABILITY_TEST_RESULTS" {
  for_each = toset(["PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "ISRC_AVAILABILITY_TEST_RESULTS"
  enable_write_privileges = true
}

module "table_database_role_prod_STAGING_RAW_MEGAPHONE" {
  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  table    = "STAGING_RAW_MEGAPHONE"
}

module "table_database_role_JOB_RUN_EVENTS" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
  table    = "JOB_RUN_EVENTS"

  enable_write_privileges = true
}
module "table_database_role_REPORT_RUN_EVENTS" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "REPORT_RUN_EVENTS"
  enable_write_privileges = true
}
module "table_database_role_JOB_DATA_EVENTS" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "JOB_DATA_EVENTS"
  enable_write_privileges = true
}
module "table_database_role_REPORT_DATA_EVENTS" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "REPORT_DATA_EVENTS"
  enable_write_privileges = true
}
module "table_database_role_AUDIT_RUN" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "AUDIT_RUN"
  enable_write_privileges = true
}

module "models_readonly" {
  for_each = toset(["DEV", "QA", "PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/schema_models_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  enable_write_privileges = false
}

module "models_readwrite" {
  for_each = toset(["DEV", "QA", "PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/schema_models_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  enable_write_privileges = true
}

module "sony_analyst_role_prod" {
  for_each = toset([
    "APPLE_ID_MAPPING",
    "COMPANY_BRAND",
    "COMPANY_BRAND_BELONGS_TO_PARENT_COMPANY",
    "COMPANY_BRAND_HAS_LABEL_VENDOR",
    "DIM_CHART",
    "DIM_CONTAINERTYPE",
    "DIM_CONTINENT",
    "DIM_CURRENCY",
    "DIM_DEVICE",
    "DIM_FEED",
    "DIM_FORMAT",
    "DIM_GENRE",
    "DIM_GLOBAL_PARTICIPANT",
    "DIM_IMPRINT",
    "DIM_ISRC",
    "DIM_LABEL",
    "DIM_LABEL_PARTICIPANT",
    "DIM_LICENSOR",
    "DIM_NEW_MUSIC_FRIDAY_CHART",
    "DIM_OS",
    "DIM_OWNER",
    "DIM_PHYSICAL_WAREHOUSE",
    "DIM_PLATFORM",
    "DIM_PLAYBACK",
    "DIM_PLAYLIST",
    "DIM_PROJECT",
    "DIM_PUBLIC_TRACK",
    "DIM_SHARINGSERVICE",
    "DIM_SOURCETYPE",
    "DIM_SUBACCOUNT",
    "DIM_SUBGENRE",
    "DIM_SUBSCRIPTIONPAYTIER",
    "DIM_SUBSCRIPTIONTYPE",
    # "DIM_TRACK",
    "DIM_TRACK_ARTIST",
    "DIM_TRACK_CLEAN_MV",
    "DIM_TRAFFICSOURCE",
    "DIM_TRANSACTIONGROUP",
    "DIM_TRANSACTIONTYPE",
    "DIM_UPPER_PROFIT_CENTER",
    "DIM_USER",
    "DIM_YOUTUBE_CHANNEL_NAMES",
    "DIM_ZIP",
    "FACT_ANALYTICS",
    "FACT_ANALYTICS_ERROR",
    "FACT_CHARTS",
    "FACT_MARKET_SHARE",
    "FACT_NEW_MUSIC_FRIDAY_AVAILABILITY",
    "FACT_SOCIAL",
    "FACT_SOCIALS",
    "FACT_YOUTUBE_ASSET_ANALYTICS",
    "FACT_YOUTUBE_ASSET_ANALYTICS_ERROR",
    "FACT_YOUTUBE_ASSET_DEMOGRAPHICS",
    "FACT_YOUTUBE_VIDEO_ANALYTICS",
    "FACT_YOUTUBE_VIDEO_DEMOGRAPHICS",
    "GLOBAL_PARTICIPANT",
    "GLOBAL_PARTICIPANT_MERGED_TO_GLOBAL_PARTICIPANT",
    "GLOBAL_PARTICIPANT_REPRESENTS_LABEL_PARTICIPANT",
    "GLOBAL_PARTICIPANT_REPRESENTS_PUBLIC_PARTICIPANT",
    "GLOBAL_SOUND_RECORDING",
    "GLOBAL_SOUND_RECORDING_REPRESENTS_LABEL_SOUND_RECORDING",
    "GLOBAL_SOUND_RECORDING_REPRESENTS_PUBLIC_SOUND_RECORDING",
    "HAS_LABEL_PARTICIPANT",
    "IODA_RELEASE_MAPPING",
    "IODA_TRACK_MAPPING",
    "IODA_TV_MAPPING",
    "IODA_VIDEO_MAPPING",
    "ISRC_TO_LABEL_PARTICIPANT_MAPPING",
    "ITUNES_TICKET_DEFECT_CODES",
    "ITUNES_TICKET_NOTES",
    "ITUNES_TICKETS",
    "LABEL_PARTICIPANT",
    "LABEL_PARTICIPANT_PARTICIPATED_IN_ORCHARD_PRODUCT",
    "LABEL_PARTICIPANT_PARTICIPATED_IN_ORCHARD_TRACK",
    "LABEL_SOUND_RECORDING",
    "PARENT_COMPANY",
    "PLACEMENTS_BY_TRACK_PLAYLIST_COUNTRY_FEED_DISTRIBUTOR_ROLLUP",
    "PLACEMENTS_METADATA",
    "PLACEMENTS_METADATA_V2",
    "PLAYLIST_CURATOR_MAPPINGS",
    "PLAYLIST_MAPPINGS",
    "PLAYLISTS_PLACEMENTS_BY_TRACK_PLAYLIST_DISTRIBUTOR",
    "PRIORITY_PLAYLISTS",
    "PUBLIC_LABEL",
    "PUBLIC_LABEL_OWNS_PRODUCT_PUBLIC_PRODUCT",
    "PUBLIC_PARTICIPANT",
    "PUBLIC_PARTICIPANT_PARTICIPATED_IN_PUBLIC_SOUND_RECORDING",
    "PUBLIC_PRODUCT",
    "PUBLIC_PRODUCT_INCLUDES_PUBLIC_TRACK",
    "PUBLIC_SOUND_RECORDING",
    "PUBLIC_TRACK",
    "PUBLIC_TRACK_IS_PLACEMENT_OF_PUBLIC_SOUND_RECORDING",
    "SERVICE_TIER",
    "SHAZAM_DAILY_EVENTS",
    "SME_DIM_DISTRIBUTION_TYPE",
    "SME_DIM_PRODUCT_TYPE",
    "SME_DIM_SALE_TYPE",
    "SME_DIM_SERVICE_TYPE",
    "SME_DIM_TRANSACTION_TYPE",
    "SME_JV_ITUNES_SALES",
    "SME_JV_SPOTIFY_SALES",
    "SONY_APPLE_ID_MAPPING_DERIVED",
    "SOUND_RECORDING_TRACK_MAPPING",
    "SPOTIFY_ORCHARD_SONY_USER_MAPPING",
    "SPOTIFY_PLAYLIST_CURATORS",
    "SPOTIFY_TRACKS",
    "SPOTIFY_USERS",
    "SPOTIFY_USERS_MAPPING",
    "SPOTIFY_USERS_NEW_USER_ID",
    "STAGING_RAW_AMAZON_ADSUPPORTED",
    "STAGING_RAW_AMAZON_ADSUPPORTED_AWAL",
    "STAGING_RAW_AMAZON_AGGREGATED_STREAMS",
    "STAGING_RAW_AMAZON_INSTANT_VIDEO",
    "STAGING_RAW_AMAZON_MARKET_SHARE_V2",
    "STAGING_RAW_AMAZON_PRIME",
    "STAGING_RAW_AMAZON_PRIME_AWAL",
    "STAGING_RAW_AMAZON_UNLIMITED",
    "STAGING_RAW_AMAZON_UNLIMITED_AWAL",
    "STAGING_RAW_AMAZON_UNLIMITED_MARKET_SHARE",
    "STAGING_RAW_AMAZON_V2",
    "STAGING_RAW_AMAZON_V2_SME",
    "STAGING_RAW_APPLE_ALBUM_MAPPING",
    "STAGING_RAW_APPLE_MUSIC_ARTISTS",
    "STAGING_RAW_APPLE_MUSIC_DEMOGRAPHICS",
    "STAGING_RAW_APPLE_MUSIC_FOOTER",
    "STAGING_RAW_APPLE_MUSIC_LIBRARYEVENTS",
    "STAGING_RAW_APPLE_MUSIC_LINEAR_RADIO_SERVICE",
    "STAGING_RAW_APPLE_MUSIC_NONROYALTY_STREAMS",
    "STAGING_RAW_APPLE_MUSIC_NONROYALTY_SUMMARY_STREAMS",
    "STAGING_RAW_APPLE_MUSIC_ROYALTY_CALCULATION",
    "STAGING_RAW_APPLE_MUSIC_SONGS",
    "STAGING_RAW_APPLE_MUSIC_STREAMS",
    "STAGING_RAW_APPLE_MUSIC_SUB_REFERENCE",
    "STAGING_RAW_APPLE_MUSIC_SUMMARY",
    "STAGING_RAW_APPLE_MUSIC_TOTALLIBRARYADDS",
    "STAGING_RAW_APPLE_PODCASTS_CONTENT_PERFORMANCE",
    "STAGING_RAW_APPLE_PODCASTS_SALES_SUMMARY",
    "STAGING_RAW_APPLE_PODCASTS_SALES_SUMMARY_MONTHLY",
    "STAGING_RAW_APPLE_PODCASTS_SALES_SUMMARY_WEEKLY",
    "STAGING_RAW_APPLE_PODCASTS_SUBSCRIPTION_EVENTS",
    "STAGING_RAW_APPLE_PODCASTS_SUBSCRIPTION_EVENTS_MONTHLY",
    "STAGING_RAW_APPLE_PODCASTS_SUBSCRIPTION_EVENTS_WEEKLY",
    "STAGING_RAW_APPLE_PODCASTS_SUBSCRIPTION_SNAPSHOT",
    "STAGING_RAW_APPLE_PODCASTS_SUBSCRIPTION_SNAPSHOT_MONTHLY",
    "STAGING_RAW_APPLE_PODCASTS_SUBSCRIPTION_SNAPSHOT_WEEKLY",
    "STAGING_RAW_APPLE_TRACK_MAPPING",
    "STAGING_RAW_AWA",
    "STAGING_RAW_AWA_MARKETSHARE",
    "STAGING_RAW_AWA_STANDARD_SALES",
    "STAGING_RAW_AWA_TRENDS",
    "STAGING_RAW_BEATPORT",
    "STAGING_RAW_CHARTABLE_CATALOG",
    "STAGING_RAW_CHARTABLE_EPISODE_COUNTRY",
    "STAGING_RAW_CHARTABLE_EPISODE_METRICS",
    "STAGING_RAW_CHARTABLE_EPISODE_PLAYERS",
    "STAGING_RAW_CHARTABLE_EPISODE_RANKINGS",
    "STAGING_RAW_CHARTABLE_EPISODE_SMARTPROMOS",
    "STAGING_RAW_CHARTABLE_EPISODES_RETENTION",
    "STAGING_RAW_CHARTABLE_METADATA",
    "STAGING_RAW_CHARTABLE_PODCAST_RANKINGS",
    "STAGING_RAW_CHARTABLE_PODCAST_RATINGS",
    "STAGING_RAW_CHARTABLE_PODCAST_REVIEWS",
    "STAGING_RAW_CHARTABLE_RETENTION_CATALOG",
    "STAGING_RAW_CHARTABLE_SMARTLINKS",
    "STAGING_RAW_DEEZER_MARKET_SHARE",
    "STAGING_RAW_DEEZER_V4",
    "STAGING_RAW_DOUYIN_TRENDS_TOPHASHTAG",
    "STAGING_RAW_DOUYIN_TRENDS_TOPSONG",
    "STAGING_RAW_EMUSIC",
    "STAGING_RAW_FANDANGO_NOW",
    "STAGING_RAW_FEATURE_FM_AD_SPEND",
    "STAGING_RAW_GFK",
    "STAGING_RAW_GOOGLE",
    "STAGING_RAW_GOOGLE_PLAY_MARKET_SHARE",
    "STAGING_RAW_GOOGLEPLAY",
    "STAGING_RAW_INSTA_REELS_CREATIONS",
    "STAGING_RAW_INSTA_REELS_VIEWS",
    "STAGING_RAW_ITUNES",
    "STAGING_RAW_ITUNES_HIDDEN",
    "STAGING_RAW_ITUNES_MARKET_SHARE",
    "STAGING_RAW_JUKE",
    "STAGING_RAW_KUGOU",
    "STAGING_RAW_KUWO",
    "STAGING_RAW_LINE_PLACE",
    "STAGING_RAW_LINE_PREF",
    "STAGING_RAW_LINE_SEX_AGE",
    "STAGING_RAW_LINE_SEX_AGE_HOUR",
    "STAGING_RAW_LINE_SEX_AGE_REGION",
    "STAGING_RAW_LINE_SEX_AGE_TYPE",
    "STAGING_RAW_LINE_TYPE",
    "STAGING_RAW_LUMINATE_DAILY_ARTIST",
    "STAGING_RAW_LUMINATE_DAILY_ISRC",
    "STAGING_RAW_LUMINATE_DAILY_SONG",
    "STAGING_RAW_LUMINATE_WEEKLY_ARTIST",
    "STAGING_RAW_LUMINATE_WEEKLY_ARTIST_PRE_2022",
    "STAGING_RAW_LUMINATE_WEEKLY_ISRC",
    "STAGING_RAW_LUMINATE_WEEKLY_ISRC_PRE_2022",
    "STAGING_RAW_LUMINATE_WEEKLY_SONG",
    "STAGING_RAW_LUMINATE_WEEKLY_SONG_PRE_2022",
    # "STAGING_RAW_MEGAPHONE",
    "STAGING_RAW_MEMBRAN",
    "STAGING_RAW_MRC",
    "STAGING_RAW_MRC_COLLECTION_METADATA",
    "STAGING_RAW_NETEASE",
    "STAGING_RAW_PANDORA",
    "STAGING_RAW_PLAYSTATION_VIDEO",
    "STAGING_RAW_QQ",
    "STAGING_RAW_RHAPSODY",
    "STAGING_RAW_RHAPSODY_SME",
    "STAGING_RAW_RITMOGESTION",
    "STAGING_RAW_SHAZAM",
    "STAGING_RAW_SME_LATAM_WEEKLY_UNIFIED_CHART",
    "STAGING_RAW_SNAPCHAT_CREATIONS",
    "STAGING_RAW_SNAPCHAT_VIEWS",
    "STAGING_RAW_SOUNDCLOUD_CUSTOMERANALYTICS_V2",
    "STAGING_RAW_SOUNDCLOUD_CUSTOMERDATA_V2",
    "STAGING_RAW_SOUNDCLOUD_PLAYLISTREPORTING_V2",
    "STAGING_RAW_SOUNDCLOUD_STREAMLEVELREPORT_V2",
    "STAGING_RAW_SOUNDCLOUD_TRACKINFORMATION_V2",
    "STAGING_RAW_SPOTIFY_AGGREGATED_STREAMS",
    "STAGING_RAW_SPOTIFY_ARTIFICIAL_STREAMS",
    "STAGING_RAW_SPOTIFY_CHARTS",
    "STAGING_RAW_SPOTIFY_MARKET_SHARE_V2",
    "STAGING_RAW_SPOTIFY_PLAYLIST_ATC",
    "STAGING_RAW_SPOTIFY_TRACK_CONVERSION",
    "STAGING_RAW_SPOTIFY_TRACK_PASSION",
    "STAGING_RAW_TIKTOK_FRAUDULENT_USAGE_REPORT",
    "STAGING_RAW_TIKTOK_TRENDS_TOPHASHTAG",
    "STAGING_RAW_TIKTOK_TRENDS_TOPSONG",
    "STAGING_RAW_UMA",
    "STAGING_RAW_UMA_MARKETSHARE",
    "STAGING_RAW_VEVO",
    "STAGING_RAW_VUDU",
    "STAGING_RAW_WYNK",
    "STAGING_RAW_XBOX",
    "STAGING_RAW_YOUTUBE_ASSET_REPORT",
    "STAGING_RAW_YOUTUBE_CLAIM",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJ_CLAIM_RAW_V1_1",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJ_CLAIM_RAW_V1_1_DMGI",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJ_CLAIM_SUMMARY_V1_1",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJ_CLAIM_SUMMARY_V1_1_DMGI",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJ_VIDEO_RAW_V1_1",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJUSTMENT_RED_LABEL_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJUSTMENT_RED_MUSIC_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJUSTMENT_RED_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_ADJUSTMENT_RED_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT_TMP",
    "STAGING_RAW_YOUTUBE_MONTHLY_CLAIM_RAW_V1_1",
    "STAGING_RAW_YOUTUBE_MONTHLY_LABEL_AP_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_RAWDATA_V1_0",
    "STAGING_RAW_YOUTUBE_MONTHLY_RAWDATA_V1_0_DMGI",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_LABEL_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_LABEL_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT_TMP",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_LABEL_SUMMARY_V1_1__MUSIC_SUMMARY",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_LABEL_SUMMARY_V1_1__NON_MUSIC_SUMMARY",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_LABEL_SUMMARY_V1_1__SUBSCRIBER_SUMMARY",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_MUSIC_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_RAWDATA_VIDEO_V1_1__VIDEO_CLAIM_RAW_REPORT",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_SUMMARY_V1_1__MUSIC_SUMMARY",
    "STAGING_RAW_YOUTUBE_MONTHLY_RED_SUMMARY_V1_1__NON_MUSIC_SUMMARY",
    "STAGING_RAW_YOUTUBE_MONTHLY_REPORT_V1_0__SUMMARY",
    "STAGING_RAW_YOUTUBE_MONTHLY_REPORT_V1_0__SUMMARY_BY_COUNTRY",
    "STAGING_RAW_YOUTUBE_MONTHLY_REPORT_V1_0__SUMMARY_BY_DAY",
    "STAGING_RAW_YOUTUBE_MONTHLY_V2",
    "STAGING_RAW_YOUTUBE_RED_MARKET_SHARE",
    "STAGING_RAW_YOUTUBE_VIDEO_REPORT",
    "STAGING_RAW_YOUTUBEVOD",
    "DIM_DAY",
    "DIM_WEEK",
    "DIM_MONTH",
    "DIM_RELEASE",
    "DIM_COUNTRY",
    "DIM_ARTIST",
    "DIM_STORE",
    "SPOTIFY_CHART",
    "SPOTIFY_TRACK",
    "SPOTIFY_TRACK_ARTIST",
    "SPOTIFY_ARTIST",
    "DIM_CALENDAR",
    "CURRENCY_EXCHANGE_RATES",
    "STAGING_RAW_SOUNDCLOUD_STREAMLEVELREPORT",
    "STAGING_RAW_SOUNDCLOUD_STATISTICS",
    "STAGING_RAW_SOUNDCLOUD_PLAYLISTREPORTING",
    "STAGING_RAW_SOUNDCLOUD_CUSTOMERDATA",
    "STAGING_RAW_SOUNDCLOUD_CUSTOMERANALYTICS",
    "STAGING_RAW_APPLE_MUSIC_PLAYLISTS",
    "STAGING_RAW_APPLE_MUSIC_ARTISTS",
    "SONY_APPLE_ID_MAPPING",
    "AWAL_APPLE_ID_MAPPING",
    "STAGING_RAW_AMAZON_MARKET_SHARE",
    "STAGING_RAW_SPOTIFY_MARKET_SHARE",
    "STAGING_RAW_SPOTIFY_MARKET_SHARE_WEEK_ENDING"
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  table    = each.value
}

module "sony_data_insights_views_prod" {
  for_each = toset([
    "V_STREAMS_BY_TRACK_COUNTRY_FEED_DISTRIBUTOR_DAILY",
    "V_STREAMS_BY_PLAYLIST_COUNTRY_FEED_DISTRIBUTOR_DAILY",
    "V_TIKTOK_BY_ISRC_COUNTRY_DAILY",
  ])

  source   = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/view_access?ref=7.7.8"
  database = var.database_name
  schema   = "PROD"
  view     = each.value
}

module "beatroot_report" {
  for_each = toset([
    "HAS_PROFILE",
    "PROFILE_HAS_ACCESS_TO_SUBACCOUNT",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  table    = each.value
}


module "table_database_role_QA_PROFILE_PLAYLIST_VISITS" {
  for_each = toset(["QA"]) # IN-16506: retrigger apply to restore grants wiped by nightly QA table recreation

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "PROFILE_PLAYLIST_VISITS"
  enable_write_privileges = true
}

module "table_database_role_PROD_PROFILE_PLAYLIST_VISITS" {
  for_each = toset(["PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "PROFILE_PLAYLIST_VISITS"
  enable_write_privileges = true
}

module "table_database_role_PLAYLIST_CURATOR_OWNER_OVERRIDES" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
  table    = "PLAYLIST_CURATOR_OWNER_OVERRIDES"
}

module "table_database_role_PLAYLIST_CURATOR_OWNER_OVERRIDES_AUDIT" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
  table    = "PLAYLIST_CURATOR_OWNER_OVERRIDES_AUDIT"
}

module "streamlit_database_role_CURATOR_OWNER_OVERRIDES_APP" {
  for_each = toset(["QA"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/streamlit_access?ref=7.7.8"

  database     = var.database_name
  schema       = each.value
  streamlit_id = "CURATOR_OWNER_OVERRIDES_APP"
}

module "cortex_search_services_access_roles" {
  for_each = toset([
    "QA",
    "PROD",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/schema_cortex_search_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
}

module "view_database_role_VENDOR_COMPANY_BRAND_PARENT_COMPANY" {
  for_each = toset(["PROD"])

  source   = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/view_access?ref=7.7.8"

  database = var.database_name
  schema   = each.value
  view     = "VENDOR_COMPANY_BRAND_PARENT_COMPANY"
}

module "table_database_role_BACKLOAD_TASKS" {
  for_each = toset(["QA", "PROD"])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database                = var.database_name
  schema                  = each.value
  table                   = "BACKLOAD_TASKS"
  enable_write_privileges = true
}

module "table_database_role_chatbot_agent_prod" {
  for_each = toset([
    "DATA_AVAILABILITY_BY_STORE_DAILY",
    "DOWNLOADS_BY_PARTICIPANT_PRODUCT_COUNTRY_FEED_DISTRIBUTOR_DAILY",
    "DOWNLOADS_BY_PARTICIPANT_TRACK_COUNTRY_FEED_DISTRIBUTOR_DAILY",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  table    = each.value
}

module "view_database_role_chatbot_agent_prod" {
  for_each = toset([
    "V_PLAYLISTS_PLACEMENTS_BY_PARTICIPANT_ISRC_PLAYLIST_PUBLIC",
    "V_STREAMS_BY_PARTICIPANT_TRACK_COUNTRY_FEED_DISTRIBUTOR_DAILY",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/view_access?ref=7.7.8"

  database = var.database_name
  schema   = "PROD"
  view     = each.value
}

# IN-17528: QA mirrors of the chatbot database roles so the dbt-analytics
# grant_cortex_chatbot_permissions macro can be validated in QA (it grants to
# DB_QA_SCHEMA_..._TABLE_READ/_VIEW_READ when run against the QA target).
module "table_database_role_chatbot_agent_qa" {
  for_each = toset([
    "DATA_AVAILABILITY_BY_STORE_DAILY",
    "DOWNLOADS_BY_PARTICIPANT_PRODUCT_COUNTRY_FEED_DISTRIBUTOR_DAILY",
    "DOWNLOADS_BY_PARTICIPANT_TRACK_COUNTRY_FEED_DISTRIBUTOR_DAILY",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/table_access?ref=7.7.8"

  database = var.database_name
  schema   = "QA"
  table    = each.value
}

module "view_database_role_chatbot_agent_qa" {
  for_each = toset([
    "V_STREAMS_BY_PARTICIPANT_TRACK_COUNTRY_FEED_DISTRIBUTOR_DAILY",
    "V_TIKTOK_BY_ISRC_COUNTRY_DAILY",
  ])

  source = "git@github.com:theorchard/terraform-snowflake.git//modules/roles/view_access?ref=7.7.8"

  database = var.database_name
  schema   = "QA"
  view     = each.value
}
