Commit da156f22 authored by vipul.v's avatar vipul.v

mqtt and postgresql updated

parent ece4100a
_
/venv/Lib/site-packages/sqlalchemy/sql/schema.py,0\3\03c17c8487ae787ca54e1068612ee0449fb2336d
J
script/core/db/__init__.py,2\2\22d1021820e124f6ade661fc6dbdc53bbdb563bc
\
,.idea/inspectionProfiles/Project_Default.xml,4\9\496a238a6afa168dbaf6efd37bb459331589579c
N
script/core/schema/__init__.py,8\4\84b7e789bb411a2f2e44fa4f79362bae15a9ca5e
4
.env,3\c\3c84dcdc6bbe3d7817c49dcdc327b926fea1808a
C
billing_output.json,a\6\a6c9aad7bfecc10410ad99e3c4d541b2e9626b69
^
..idea/inspectionProfiles/profiles_settings.xml,1\e\1e9075f5bf079c01ef2c910709e91a497d262080
S
#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
]
-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
\ No newline at end of file
_
/venv/Lib/site-packages/sqlalchemy/sql/schema.py,0\3\03c17c8487ae787ca54e1068612ee0449fb2336d
J
script/core/db/__init__.py,2\2\22d1021820e124f6ade661fc6dbdc53bbdb563bc
\
,.idea/inspectionProfiles/Project_Default.xml,4\9\496a238a6afa168dbaf6efd37bb459331589579c
N
script/core/schema/__init__.py,8\4\84b7e789bb411a2f2e44fa4f79362bae15a9ca5e
4
.env,3\c\3c84dcdc6bbe3d7817c49dcdc327b926fea1808a
C
billing_output.json,a\6\a6c9aad7bfecc10410ad99e3c4d541b2e9626b69
^
..idea/inspectionProfiles/profiles_settings.xml,1\e\1e9075f5bf079c01ef2c910709e91a497d262080
S
#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
]
-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
[MQTT_SERVICE] [MQTT_SERVICE]
broker_host = 192.168.0.220 broker_host = 192.168.0.220
broker_port = 1883 broker_port = 1883
[SERVICE]
port=8000
host=0.0.0.0
\ No newline at end of file
from dotenv import load_dotenv
import os import os
from configparser import SafeConfigParser from configparser import SafeConfigParser
from dotenv import load_dotenv
load_dotenv() load_dotenv()
config = SafeConfigParser() config = SafeConfigParser()
config.read('conf/application.conf') config.read('conf/application.conf')
class Sql: class Sql:
postgresql: str = os.environ.get("POSTGRESQL_URI") postgresql: str = os.environ.get("POSTGRESQL_URI")
class Services: class Services:
host = config.get("MQTT_SERVICE", "broker_host") host = config.get("MQTT_SERVICE", "broker_host")
port = int(config.get("MQTT_SERVICE", "broker_port")) port = int(config.get("MQTT_SERVICE", "broker_port"))
class Service:
port = int(config.getint("SERVICE", "port"))
host = config.get("SERVICE", "host")
class APIEndpoints:
find = "/find"
fetch_records = "/fetch_records"
\ No newline at end of file
import json import json
import paho.mqtt.client as mqtt import paho.mqtt.client as mqtt
from sqlalchemy.orm import sessionmaker
from script.config.app_confing import Services from script.config.app_confing import Services
from script.core.db.postgresql_connector import session from script.core.db.postgresql_connector import engine
from script.core.schema.schema_file import Items, InvoiceDetails from script.core.schema.schema_file import Items, InvoiceDetails
# subscribe Session = sessionmaker(bind=engine)
topic = "test/#" topic = "test/#"
...@@ -25,6 +25,9 @@ class MqttConnectPostgresql: ...@@ -25,6 +25,9 @@ class MqttConnectPostgresql:
"Received message on topic '" + msg.topic + "' with message '" + msg.payload.decode('utf-8') + "'") "Received message on topic '" + msg.topic + "' with message '" + msg.payload.decode('utf-8') + "'")
data = json.loads(msg.payload.decode('utf-8')) data = json.loads(msg.payload.decode('utf-8'))
print(data) print(data)
invoices = []
items = []
for invoice in data: for invoice in data:
invoice_number = invoice['invoice_number'] invoice_number = invoice['invoice_number']
client_name = invoice['client_name'] client_name = invoice['client_name']
...@@ -64,9 +67,10 @@ class MqttConnectPostgresql: ...@@ -64,9 +67,10 @@ class MqttConnectPostgresql:
total=total, total=total,
paid=paid paid=paid
) )
session.add(invoice_data) invoices.append(invoice_data)
session.flush()
invoice_id = invoice_data.id invoice_id = len(invoices)
for item_data in invoice['items']: for item_data in invoice['items']:
item = Items( item = Items(
invoice_id=invoice_id, invoice_id=invoice_id,
...@@ -74,7 +78,11 @@ class MqttConnectPostgresql: ...@@ -74,7 +78,11 @@ class MqttConnectPostgresql:
quantity=item_data['quantity'], quantity=item_data['quantity'],
price=item_data['price'] price=item_data['price']
) )
session.add(item) items.append(item)
with Session() as session:
session.bulk_save_objects(invoices)
session.bulk_save_objects(items)
session.commit() session.commit()
client = mqtt.Client() client = mqtt.Client()
...@@ -85,4 +93,3 @@ class MqttConnectPostgresql: ...@@ -85,4 +93,3 @@ class MqttConnectPostgresql:
except Exception as e: except Exception as e:
print(e, "Error detected in subscribe") print(e, "Error detected in subscribe")
class ErrorMessage(Exception):
ERRORS_FETCH = "Due to value error in fetch"
\ No newline at end of file
...@@ -13,7 +13,7 @@ class InvoiceDetails(Base): ...@@ -13,7 +13,7 @@ class InvoiceDetails(Base):
id = Column('id', Integer, primary_key=True, autoincrement=True) id = Column('id', Integer, primary_key=True, autoincrement=True)
invoice_number = Column('invoice_number', String, unique=True) invoice_number = Column('invoice_number', String, unique=True)
client_name = Column('client_name', String) client_name = Column('client_name', String)
invoice_date = Column('invoice_data', Date) invoice_date = Column('invoice_date', Date)
due_date = Column('due_date', Date) due_date = Column('due_date', Date)
subtotal = Column('subtotal', Integer) subtotal = Column('subtotal', Integer)
tax_rate = Column('tax_rate', Float) tax_rate = Column('tax_rate', Float)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment