Skip to content

Commit 3ecf577

Browse files
authored
Merge pull request #8 from fedspendingtransparency/mod/dev-12162-agency-loader
[DEV-12162] Agency loader
2 parents b897d8b + 8d295cf commit 3ecf577

5 files changed

Lines changed: 2083 additions & 1 deletion

File tree

brus_backend_common/models/__init__.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
11
from brus_backend_common.models.lakehouse_model import LakeHouseCurrentMigration, ExternalDataLoadDate
22

3-
from brus_backend_common.models.reference import DEFCBronze, DEFCGold, DEFCGroup, FONBronze, FONGold
3+
from brus_backend_common.models.reference import (
4+
DEFCBronze,
5+
DEFCGold,
6+
DEFCGroup,
7+
FONBronze,
8+
FONGold,
9+
AgencyBronze,
10+
CGACGold,
11+
FRECGold,
12+
SubTierAgencyGold,
13+
)
414

515
LAKEHOUSE_MODEL_CLASSES = [
16+
AgencyBronze,
17+
CGACGold,
18+
FRECGold,
19+
SubTierAgencyGold,
620
DEFCBronze,
721
DEFCGroup,
822
DEFCGold,

brus_backend_common/models/reference.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,110 @@
22
from brus_backend_common.models.lakehouse_model import BaseSchema, CSVModel, LakeHouseDatabase, SchemaField, SchemaType
33

44

5+
class AgencyBronze(CSVModel):
6+
BUCKET_NAME = CONFIG.LAKEHOUSE_REFERENCE_BUCKET
7+
DATABASE_NAME = LakeHouseDatabase.BRONZE
8+
TABLE_NAME = "agency_codes"
9+
DESCRIPTION = "Raw Agency CSV placed in S3"
10+
CSV_NAME = "agency_codes.csv"
11+
UNIQUE_CONSTRAINTS = [("CGAC AGENCY CODE", "FREC", "SUBTIER CODE")]
12+
MIGRATION_HISTORY = []
13+
14+
STRUCTURE = BaseSchema(
15+
[
16+
SchemaField("CGAC AGENCY CODE", SchemaType.STRING, False),
17+
SchemaField("AGENCY NAME", SchemaType.STRING, False),
18+
SchemaField("AGENCY ABBREVIATION", SchemaType.STRING, True),
19+
SchemaField("FREC", SchemaType.STRING, True),
20+
SchemaField("FREC Entity Description", SchemaType.STRING, True),
21+
SchemaField("FREC ABBREVIATION", SchemaType.STRING, True),
22+
SchemaField("SUBTIER CODE", SchemaType.STRING, True),
23+
SchemaField("SUBTIER NAME", SchemaType.STRING, True),
24+
SchemaField("SUBTIER ABBREVIATION", SchemaType.STRING, True),
25+
SchemaField("Admin Org Name", SchemaType.STRING, True),
26+
SchemaField("ADMIN_ORG", SchemaType.STRING, True),
27+
SchemaField("TOPTIER_FLAG", SchemaType.BOOLEAN, False),
28+
SchemaField("IS_FREC", SchemaType.BOOLEAN, False),
29+
SchemaField("FREC CGAC ASSOCIATION", SchemaType.BOOLEAN, False),
30+
SchemaField("USER SELECTABLE ON USASPENDING.GOV", SchemaType.BOOLEAN, False),
31+
SchemaField("MISSION", SchemaType.STRING, True),
32+
SchemaField("ABOUT AGENCY DATA", SchemaType.STRING, True),
33+
SchemaField("WEBSITE", SchemaType.STRING, True),
34+
SchemaField("CONGRESSIONAL JUSTIFICATION", SchemaType.STRING, True),
35+
SchemaField("ICON FILENAME", SchemaType.STRING, True),
36+
SchemaField("COMMENT", SchemaType.STRING, True),
37+
]
38+
)
39+
40+
41+
class CGACGold(CSVModel):
42+
BUCKET_NAME = CONFIG.LAKEHOUSE_REFERENCE_BUCKET
43+
DATABASE_NAME = LakeHouseDatabase.GOLD
44+
TABLE_NAME = "cgac"
45+
DESCRIPTION = "CGAC Data after processing"
46+
CSV_NAME = "cgac.csv"
47+
PK = "cgac_id"
48+
UNIQUE_CONSTRAINTS = ["cgac_code"]
49+
MIGRATION_HISTORY = []
50+
51+
STRUCTURE = BaseSchema(
52+
[
53+
SchemaField("cgac_id", SchemaType.INTEGER, False),
54+
SchemaField("cgac_code", SchemaType.STRING, False),
55+
SchemaField("agency_name", SchemaType.STRING, False),
56+
SchemaField("agency_abbreviation", SchemaType.STRING, True),
57+
SchemaField("display_name", SchemaType.STRING, False),
58+
SchemaField("icon_name", SchemaType.STRING, True),
59+
]
60+
)
61+
62+
63+
class FRECGold(CSVModel):
64+
BUCKET_NAME = CONFIG.LAKEHOUSE_REFERENCE_BUCKET
65+
DATABASE_NAME = LakeHouseDatabase.GOLD
66+
TABLE_NAME = "frec"
67+
DESCRIPTION = "FREC Data after processing"
68+
CSV_NAME = "frec.csv"
69+
PK = "frec_id"
70+
UNIQUE_CONSTRAINTS = ["frec_code"]
71+
MIGRATION_HISTORY = []
72+
73+
STRUCTURE = BaseSchema(
74+
[
75+
SchemaField("frec_id", SchemaType.INTEGER, False),
76+
SchemaField("frec_code", SchemaType.STRING, False),
77+
SchemaField("agency_name", SchemaType.STRING, False),
78+
SchemaField("agency_abbreviation", SchemaType.STRING, True),
79+
SchemaField("display_name", SchemaType.STRING, False),
80+
SchemaField("cgac_code", SchemaType.STRING, False),
81+
SchemaField("icon_name", SchemaType.STRING, True),
82+
]
83+
)
84+
85+
86+
class SubTierAgencyGold(CSVModel):
87+
BUCKET_NAME = CONFIG.LAKEHOUSE_REFERENCE_BUCKET
88+
DATABASE_NAME = LakeHouseDatabase.GOLD
89+
TABLE_NAME = "subtier_agency"
90+
DESCRIPTION = "Sub Tier Agency Data after processing"
91+
CSV_NAME = "subtier_agency.csv"
92+
PK = "subtier_agency_id"
93+
UNIQUE_CONSTRAINTS = ["subtier_code"]
94+
MIGRATION_HISTORY = []
95+
96+
STRUCTURE = BaseSchema(
97+
[
98+
SchemaField("subtier_agency_id", SchemaType.INTEGER, False),
99+
SchemaField("subtier_code", SchemaType.STRING, False),
100+
SchemaField("subtier_name", SchemaType.STRING, False),
101+
SchemaField("cgac_code", SchemaType.STRING, False),
102+
SchemaField("frec_code", SchemaType.STRING, False),
103+
SchemaField("priority", SchemaType.INTEGER, False),
104+
SchemaField("is_frec", SchemaType.BOOLEAN, False),
105+
]
106+
)
107+
108+
5109
class DEFCBronze(CSVModel):
6110
BUCKET_NAME = CONFIG.LAKEHOUSE_REFERENCE_BUCKET
7111
DATABASE_NAME = LakeHouseDatabase.BRONZE

0 commit comments

Comments
 (0)