modified: .gitignore

modified:   src/Dockerfile
This commit is contained in:
TC
2023-11-08 23:08:25 +01:00
parent 9f3313f1e7
commit 75e3ae4bfc
3 changed files with 98 additions and 0 deletions

96
dbinit.py Normal file
View File

@@ -0,0 +1,96 @@
import os
from peewee import AutoField, Model, CharField, IntegerField, DateField, BooleanField, CompositeKey, DecimalField, ForeignKeyField, SQL, SqliteDatabase
path = os.path.dirname(os.path.abspath(__file__))
db_file = 'database.sqlite'
db = SqliteDatabase(os.path.join(path, db_file))
path = os.path.dirname(os.path.abspath(__file__))
db_file = 'database_empty.sqlite'
db = SqliteDatabase(os.path.join(path, db_file))
# class ChartType(Enum):
# DAY = "DAY"
# MONTH = "MONTH"
# YEAR = "YEAR"
class PPETable(Model):
id = CharField(primary_key=True)
ppe = CharField(unique=True)
tariffCode = CharField()
type = CharField()
name = CharField()
last_update_date = DateField(null=True)
is_active = BooleanField(default=True)
class Meta:
database = db
table_name = 'PPE'
constraints = [SQL('UNIQUE (ppe, tariffCode)')]
class MeterTable(Model):
id = AutoField() # Meter point
ppe_id = ForeignKeyField(PPETable, backref='zones')
meter_type = CharField()
last_update_date = DateField(null=True)
first_date = DateField(null=True)
class Meta:
database = db
table_name = 'METER'
constraints = [SQL('UNIQUE (ppe_id, meter_type)')]
class CounterTable(Model):
id = AutoField()
meter_id = ForeignKeyField(MeterTable, backref='meter')
tariff = CharField()
measurement_date = DateField(null=True)
meter_value = DecimalField(max_digits=15, decimal_places=5, null=True)
class Meta:
database = db
table_name = 'COUNTER'
class ChartTable(Model):
id = IntegerField()
meter_type = CharField()
year = IntegerField()
month = IntegerField(null=True)
day = IntegerField(null=True)
value =CharField()
class Meta:
database = db
table_name = 'CHART_CACHE'
primary_key = CompositeKey('id', 'year', 'month', 'day')
class MainChartTable(Model):
mp = CharField()
meter_type = CharField()
zone = IntegerField()
tm = IntegerField()
value = DecimalField(max_digits=20, decimal_places=16, null=True)
tarAvg = DecimalField(max_digits=20, decimal_places=16, null=True)
est = BooleanField(default=False)
cplt = BooleanField(default=False)
class Meta:
database = db
table_name = 'CHART'
primary_key = CompositeKey('mp', 'meter_type', 'zone', 'tm')
def databaseInit():
db.create_tables([PPETable], safe=True)
db.create_tables([MeterTable], safe=True)
db.create_tables([CounterTable], safe=True)
db.create_tables([ChartTable], safe=True)
db.create_tables([MainChartTable], safe=True)
if __name__ == "__main__":
databaseInit()