# Copyright Amazon.com, Inc. and its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0

from aws_cdk import (
    aws_timestream as timestream,
    core
)


class AmazonTimeStreamStack(core.Stack):

    def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        memory_retention_param = core.CfnParameter(self, "memoryRetentionParam", type="Number",
                                                   min_value=1, max_value=8766, default=6,
                                                   description="The duration (in hours) for which data must be retained "
                                                               "in the memory store per table.")

        magnetic_retention_param = core.CfnParameter(self, "magneticRetentionParam", type="Number",
                                                     min_value=1, max_value=73000, default=15,
                                                     description="The duration (in days) for which data must be retained "
                                                                 "in the magnetic store per table.")

        database = timestream.CfnDatabase(self, id="TimestreamDatabase", database_name="TimestreamDB")

        retention = {
            "MemoryStoreRetentionPeriodInHours": memory_retention_param.value_as_number,
            "MagneticStoreRetentionPeriodInDays": magnetic_retention_param.value_as_number
        }

        table = timestream.CfnTable(self, "SampleMetricsTable", database_name=database.database_name,
                                    retention_properties=retention,
                                    table_name="SampleMetricsTable")
        table.add_depends_on(database)

        self._database = database
        self._table = table

    @property
    def database(self) -> timestream.CfnDatabase:
        return self._database

    @property
    def table(self) -> timestream.CfnTable:
        return self._table