Skip to content

Commit

Permalink
Feature #313 - Add Statewide IDs (#314)
Browse files Browse the repository at this point in the history
* Adds a StateID model as a child of the officer table. This allow the index to track statewide Officer IDs such as Tax ID or TCOLE PID numbers.

* Add Enum for State Abbreviations
  • Loading branch information
DMalone87 committed Jan 7, 2024
1 parent b887249 commit ce625a2
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 5 deletions.
73 changes: 70 additions & 3 deletions backend/database/models/officer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,83 @@ class Rank(str, enum.Enum):
CHIEF = "CHIEF"


class State(str, enum.Enum):
AL = "AL"
AK = "AK"
AZ = "AZ"
AR = "AR"
CA = "CA"
CO = "CO"
CT = "CT"
DE = "DE"
FL = "FL"
GA = "GA"
HI = "HI"
ID = "ID"
IL = "IL"
IN = "IN"
IA = "IA"
KS = "KS"
KY = "KY"
LA = "LA"
ME = "ME"
MD = "MD"
MA = "MA"
MI = "MI"
MN = "MN"
MS = "MS"
MO = "MO"
MT = "MT"
NE = "NE"
NV = "NV"
NH = "NH"
NJ = "NJ"
NM = "NM"
NY = "NY"
NC = "NC"
ND = "ND"
OH = "OH"
OK = "OK"
OR = "OR"
PA = "PA"
RI = "RI"
SC = "SC"
SD = "SD"
TN = "TN"
TX = "TX"
UT = "UT"
VT = "VT"
VA = "VA"
WA = "WA"
WV = "WV"
WI = "WI"
WY = "WY"


class StateID(db.Model):
"""
Represents a Statewide ID that follows an offcier even as they move between
law enforcement agencies. for an officer. For example, in New York, this
would be the Tax ID Number.
"""
id = db.Column(db.Integer, primary_key=True)
officer_id = db.Column(
db.Integer, db.ForeignKey("officer.id"))
id_name = db.Column(db.Text) # e.g. "Tax ID Number"
state = db.Column(db.Enum(State)) # e.g. "NY"
value = db.Column(db.Text) # e.g. "958938"

def __repr__(self):
return f"<StateID {self.id}>"


class Officer(db.Model):
id = db.Column(db.Integer, primary_key=True) # officer id
first_name = db.Column(db.Text)
last_name = db.Column(db.Text)
race = db.Column(db.Text)
ethnicity = db.Column(db.Text)
gender = db.Column(db.Text)
# Note: rank at time of incident
rank = db.Column(db.Enum(Rank))
star = db.Column(db.Text) # type?
date_of_birth = db.Column(db.Date)

def __repr__(self):
Expand Down
6 changes: 4 additions & 2 deletions backend/database/models/perpetrator.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from backend.database.models._assoc_tables import perpetrator_officer
from backend.database.models.officer import Rank
from backend.database.models.officer import Rank, State
from .. import db


Expand All @@ -15,7 +15,9 @@ class Perpetrator(db.Model):
unit = db.Column(db.Text) # type?
# Note: rank at time of incident
rank = db.Column(db.Enum(Rank))
star = db.Column(db.Text) # type?
state_id_val = db.Column(db.Text)
state_id_state = db.Column(db.Enum(State))
state_id_name = db.Column(db.Text)
role = db.Column(db.Text)
suspects = db.relationship(
"Officer", secondary=perpetrator_officer, backref="accusations")
Expand Down

0 comments on commit ce625a2

Please sign in to comment.