Models package

Here as a diagram of the simple database followed by their corresponding classes. I think they are simple enough to understand directly ;)

Database UML Diagram

The redirect_rule, domain_rule , path_rule and destination_rule tables all have the following two fields:

name Description type other
created_at The time this entry was created on Datetime now
modified_at The last time the entry was modified Datetime now

Redirect Rule

name Description type other
id The primary key Integer auto increment
domain_rule_id The ID of the domain rule Integer foreign key
path_rule_id The ID of the path rule Integer foreign key
destination_rule_id The ID of the destination rule Integer foreign key
weight The weight/priority of this rule over the others Integer 100

This is how it looks in Python:

    id = Column(Integer, autoincrement=True, primary_key=True)
    domain_rule_id = Column(Integer, ForeignKey('domain_rule.id'), nullable=False)
    path_rule_id = Column(Integer, ForeignKey("path_rule.id"), nullable=False)
    destination_rule_id = Column(Integer, ForeignKey("destination_rule.id"), nullable=False)
    weight = Column(Integer, nullable=False, default=100)

Path Rule

name Description type other
id The primary key Integer auto increment
rule The rule that can be regex or literal in a string String required, not null
is_regex If the rule is a regex or literal Boolean False

This is how it looks in Python:

    id = Column(Integer, autoincrement=True, primary_key=True)
    rule = Column(String(1000))
    is_regex = Column(Boolean, default=False)

Domain Rule

name Description type other
id The primary key Integer auto increment
rule The rule that can be regex or literal in a string String required, not null
is_regex If the rule is a regex or literal Boolean False

This is how it looks in Python:

    id = Column(Integer, autoincrement=True, primary_key=True)
    rule = Column(String(1000))
    is_regex = Column(Boolean, default=False)

Destination Rule

name Description type other
id The primary key Integer auto increment
destination_url The destination URL that can have also placeholders String required, not null
is_rewrite Weather or not the URL has placeholders in it Boolean False

This is how it looks in Python:

    id = Column(Integer, autoincrement=True, primary_key=True)
    destination_url = Column(String(1000))
    is_rewrite = Column(Boolean, default=False)

Ambiguous Requests

name Description type other
id The primary key Integer auto increment
request The full URL of the request that the worker got String required, not null
created_at The time this entry was created on Datetime now

This is how it looks in Python:

    id = Column(Integer, autoincrement=True, primary_key=True)
    request = Column(String(1000), unique=True)
    created_at = Column(DateTime, default=datetime.now())

Hyperscan DB Version

name Description type other
id The primary key Integer auto increment
old_version The previous version of the HS database String nullable
current_version The current loaded version of the HS database String required, no null

This is how it looks in Python:

    id = Column(Integer, autoincrement=True, primary_key=True)
    old_version = Column(String, nullable=True)
    current_version = Column(String, nullable=False)