-- Copyright 2016 The Domain Registry Authors. All Rights Reserved.
--
-- 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.

-- Registry Data View SQL
--
-- This query lists registry fields necessary for billing.
--
-- TODO(b/20764952): extend this view to support timed transition properties.
-- TODO(b/18092292): add a column for whether the TLD is "billable" or not.
SELECT
  tldStr AS tld,
  tldType AS type,
  -- This relies on the fact that we currently haven't ever used more than one
  -- value with renewBillingCostTransitions.
  -- TODO(b/20764952): fix this limitation.
  FIRST(renewBillingCostTransitions.billingCost) WITHIN RECORD
    AS renewBillingCost,
  -- Grace period lengths are stored in the ISO 8601 duration format as a
  -- duration in seconds, which produces a string of the form "PT####S".
  INTEGER(REGEXP_EXTRACT(autoRenewGracePeriodLength, r'PT(.+)S'))
    AS autorenewGracePeriodSeconds,
  premiumList.path AS premiumListPath,
  -- TODO(b/18265521): remove this column once the referenced bug is fixed;
  -- this column is only included because without it BigQuery will complain
  -- that we aren't consuming reservedLists (due to it having a repeated .path
  -- child field, which overlaps with premiumList.path above).
  GROUP_CONCAT_UNQUOTED(reservedLists.path, "/") WITHIN RECORD
    AS reservedListPaths,
FROM
  [%SOURCE_DATASET%.Registry]
WHERE
   -- Filter out Registry 1.0 data - TODO(b/20828509): remove this.
  __key__.namespace = ''
ORDER BY
  tld
