From 2ea8d3a44d89934f7b22ddb932c76322601028a5 Mon Sep 17 00:00:00 2001 From: Kristofer Hallin Date: Tue, 4 Jan 2022 22:12:26 +0100 Subject: Use FastAPI routers and split things to multiple files. --- src/db/scanner.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/db/scanner.py (limited to 'src/db/scanner.py') diff --git a/src/db/scanner.py b/src/db/scanner.py new file mode 100644 index 0000000..714551f --- /dev/null +++ b/src/db/scanner.py @@ -0,0 +1,46 @@ +import enum +from datetime import datetime + +from sqlalchemy import (Boolean, Column, DateTime, Integer, Unicode, + UniqueConstraint, create_engine) +from sqlalchemy.ext.declarative import declarative_base + +from db import SqlDB, get_conn_str + +Base = declarative_base() +engine = create_engine(get_conn_str()) + + +class Scanner(Base): + __tablename__ = 'scanners' + __table_args__ = ( + None, + UniqueConstraint('id'), + ) + + id = Column(Integer, autoincrement=True, primary_key=True) + uuid = Column(Unicode(37), nullable=False) + enabled = Column(Boolean, nullable=False) + first_seen = Column(DateTime, default=datetime.utcnow, nullable=False) + last_seen = Column(DateTime, default=datetime.utcnow, + onupdate=datetime.utcnow, nullable=False) + comment = Column(Unicode(255), nullable=True) + scanners = Column(Unicode(2048), nullable=False) + target = Column(Unicode(255), nullable=True) + + def as_dict(self): + """Return JSON serializable dict.""" + d = {} + for col in self.__table__.columns: + value = getattr(self, col.name) + if issubclass(value.__class__, enum.Enum): + value = value.value + elif issubclass(value.__class__, Base): + continue + elif issubclass(value.__class__, datetime): + value = str(value) + d[col.name] = value + return d + + +Base.metadata.create_all(engine) -- cgit v1.1