-
Notifications
You must be signed in to change notification settings - Fork 0
/
models.py
43 lines (33 loc) · 1000 Bytes
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""
model for lmabda
"""
import pytz
from pynamodb.attributes import (
UnicodeAttribute, UTCDateTimeAttribute, BooleanAttribute
)
from pynamodb.models import Model
from constants import ENV, AWS_REGION
def get_now():
import datetime
return datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)
def create_table_name(table_name):
"""
create table to name for dynamodb
"""
return f'{ENV}-{table_name}'
class ShortURL(Model):
"""
A DynamoDB VideoWatch
"""
class Meta:
"""
set meta of table
"""
table_name = create_table_name("copc-urls-data-store")
region = AWS_REGION
url = UnicodeAttribute(hash_key=True, null=False)
state = UnicodeAttribute(null=False) # render state as a blob of json
created_at = UTCDateTimeAttribute(default=get_now())
# automatically creates a table in dynamo db if doesnt exist.
if not ShortURL.exists():
ShortURL.create_table(wait=True, billing_mode="PAY_PER_REQUEST")