22import datetime
33from textwrap import dedent
44from typing import Any , Iterable , Optional , Tuple
5+ from uuid import UUID
56
67import psycopg
78from psycopg .types .json import Jsonb
@@ -49,8 +50,9 @@ def create_tables(self):
4950 dedent (
5051 """\
5152 CREATE TABLE IF NOT EXISTS snapshot (
52- id SERIAL PRIMARY KEY,
53- time TIMESTAMPTZ NOT NULL
53+ id SERIAL PRIMARY KEY,
54+ time TIMESTAMPTZ NOT NULL,
55+ azure_tenant UUID
5456 )
5557 """
5658 )
@@ -61,32 +63,33 @@ def create_tables(self):
6163 """\
6264 CREATE TABLE IF NOT EXISTS res (
6365 time TIMESTAMPTZ NOT NULL,
64- snapshot INTEGER,
65- rid VARCHAR,
66- data JSONB,
66+ snapshot INTEGER,
67+ azure_tenant UUID,
68+ rid VARCHAR,
69+ data JSONB,
6770 FOREIGN KEY (snapshot) REFERENCES snapshot (id)
6871 )
6972 """
7073 )
7174 )
7275 self .db .create_hypertable ("res" , "time" )
7376
74- def insert_resource (self , time : datetime .datetime , snapshot_id , rid : str , data : dict ):
77+ def insert_resource (self , time : datetime .datetime , azure_tenant : UUID , snapshot_id , rid : str , data : dict ):
7578 """Insert a resource into the DB"""
7679 self .db .exec (
77- """INSERT INTO res (time, snapshot, rid, data) VALUES (%s, %s, %s, %s)""" ,
78- (time , snapshot_id , rid , Jsonb (data )),
80+ """INSERT INTO res (time, snapshot, azure_tenant, rid, data) VALUES (%s, %s, %s, %s, %s)""" ,
81+ (time , snapshot_id , azure_tenant , rid , Jsonb (data )),
7982 )
8083
81- def insert_snapshot (self , time : datetime .datetime , resources : Iterable [Tuple [str , dict ]]):
84+ def insert_snapshot (self , time : datetime .datetime , azure_tenant : UUID , resources : Iterable [Tuple [str , dict ]]):
8285 """Insert a complete snapshot into the DB"""
83- snapshot_id = self .db .exec_returning ("""INSERT INTO snapshot (time) VALUES (%s) RETURNING id""" , (time ,))
86+ snapshot_id = self .db .exec_returning ("""INSERT INTO snapshot (time, azure_tenant ) VALUES (%s, %s ) RETURNING id""" , (time , azure_tenant ))
8487 for rid , data in resources :
85- self .insert_resource (time , snapshot_id , rid , data )
88+ self .insert_resource (time , azure_tenant , snapshot_id , rid , data )
8689
87- def insert_delta (self , time : datetime .datetime , rid : str , data : dict ):
90+ def insert_delta (self , time : datetime .datetime , azure_tenant : UUID , rid : str , data : dict ):
8891 """Insert a single delta into the DB"""
89- return self .insert_resource (time , None , rid , data )
92+ return self .insert_resource (time , azure_tenant , None , rid , data )
9093
9194 def read_snapshot (self , time : datetime .datetime ):
9295 """Read a complete snapshot. Does not include any deltas"""
0 commit comments