diff --git a/.gitignore b/.gitignore index a0bf7db..a2c6dae 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ src/*.sqlite src/config.ini src/rund.sh src.old/* +src/dbinit.py import.py check.py *.sqlite diff --git a/dbinit.py b/dbinit.py new file mode 100644 index 0000000..caf389a --- /dev/null +++ b/dbinit.py @@ -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() \ No newline at end of file diff --git a/src/Dockerfile b/src/Dockerfile index 83b8523..65f6a97 100644 --- a/src/Dockerfile +++ b/src/Dockerfile @@ -12,6 +12,7 @@ COPY main.py / COPY api.py / COPY moj_licznik.py / COPY log_config.py / +COPY database_empty.sqlite /database.sqlite RUN chmod a+x /run.sh RUN pip install -r requirements.txt