Skip to content
Snippets Groups Projects
Commit 6cc1a532 authored by kainguyen's avatar kainguyen
Browse files

Merge branch 'Populate-chapterLookup-Table' into 'main'

Populated chapterLookup table

See merge request !7
parents 27d91ba9 a55419a9
No related branches found
No related tags found
1 merge request!7Populated chapterLookup table
......@@ -4,7 +4,7 @@ const {
} = require("../../repository/rolesPermissionRepository");
const {
addStateIfNotExists,
checkTableExistence,
checkStateTableExistence,
} = require("../../repository/stateRepository");
const {
addInvolvementTypeIfNotExists,
......@@ -12,6 +12,10 @@ const {
checkInvolvementTypeTableExistence,
checkInvolvementLookupTableExistence,
} = require("../../repository/involvementRepository");
const {
checkChapterTableExistence,
addChapterIfNotExists
} = require("../../repository/chapterRepository");
/*
Class responsible for populating the database
......@@ -80,7 +84,7 @@ class DatabaseInitializer {
Creates all the states
*/
async initializeStates() {
checkTableExistence();
checkStateTableExistence();
const states = [
"AL",
......@@ -234,6 +238,139 @@ class DatabaseInitializer {
}
}
/*
Creates all the chapters
*/
async initializeChapters() {
checkChapterTableExistence();
const chapters = [
"Alleghany Highlands #1",
"Augusta #29",
"Central Virginia #16",
"Charlottesville #7",
"Commonwealth #11",
"Danville #8",
"Eastern Shore #9",
"Fauquier #12",
"Franklin County/Smith Mountain Lake #3",
"Fredericksburg #13",
"Greensville/Southampton #10",
"Halifax #37",
"Loudoun County #15",
"Massanutten #18",
"D.C. Metro Area #6",
"New River Valley #19",
"Patrick Henry #17",
"Peanut #20",
"Peninsula #21",
"Piedmont #22",
"Prince William #23",
"Richmond #24",
"Roanoke Valley #25",
"Rockbridge #26",
"Shenandoah #27",
"Southside #36",
"Southwest Virginia #28",
"TideNeck #30",
"Tidewater #31",
"Tri-Cities #32",
"Williamsburg #33",
"Wythe-Bland #34",
"Belgium #239",
"China - Beijing #237",
"China - Shanghai #236",
"United Kingdom #250",
"Germany #235",
"Hong Kong #200",
"India - Hyderabad #232",
"India - Mumbai #210",
"Jordan #240",
"South Africa #238",
"Turkey #234",
"New Zealand #251",
"North Alabama #123",
"Central Alabama (Birmingham) #50",
"Kansas City #132",
"St. Louis #77",
"Greater Phoenix #124",
"New England #75",
"Northwest Arkansas #155",
"New Jersey #79",
"Los Angeles #52",
"Orange County #117",
"Sacramento #125",
"San Diego #119",
"San Francisco Bay Area #51",
"New York Capital District #82",
"New York City #83",
"Syracuse #85",
"Denver #53",
"Asheville",
"Charlotte #86",
"Coastal Carolina #87",
"Crystal Coast #151",
"Greenville #150",
"NC Triad #90",
"Triangle #88",
"Connecticut #54",
"First State #55",
"Cincinnati #92",
"Northeast Ohio #95",
"Central Florida #62",
"Jacksonville #59",
"Northwest Florida/Mobile #61",
"South Florida #57",
"Southwest Florida #142",
"Tallahassee #60",
"Tampa Bay #63",
"The Villages #231",
"Portland #96",
"Central Pennsylvania #121",
"Eastern Pennsylvania #48",
"Philadelphia #97",
"Pittsburgh #98",
"Atlanta #65",
"Central Savannah River Area #66",
"Classic City #145",
"Savannah #148",
"Charleston #102",
"Columbia #103",
"Grand Strand - Myrtle Beach #14",
"Palmetto #91",
"Hawaii #135",
"Chattanooga #105",
"East Tennessee #106",
"Knoxville #107",
"Memphis #108",
"Middle Tennessee #109",
"Idaho",
"Chicago #67",
"Austin #120",
"Dallas-Fort Worth #110",
"Houston #111",
"San Antonio #137",
"Indianapolis #130",
"Iowa #78",
"Utah #128",
"Kentuckiana #68",
"Greater Seattle #112",
"New Orleans/Baton Rouge #70",
"Vandalia #114",
"Annapolis #72",
"Baltimore #71",
"Western Maryland #73",
"Wisconsin #126",
"Southeastern Michigan #76",
"Minnesota #131",
];
for (const chapter of chapters) {
await addChapterIfNotExists(chapter);
}
}
async initializeAll() {
await this.testDBConnection();
......@@ -242,6 +379,7 @@ class DatabaseInitializer {
await this.initializeStates();
await this.initializeInvolvementTypes();
await this.initializeInvolvementLookups();
await this.initializeChapters();
console.log("database init completed.");
}
......
const { pool } = require("../config/database/database.config");
/*
Class responsible for making queries to the
chapterLookup database.
*/
/*
Function that adds chapter to database if it doesn't aready exist
chapter must be a string
*/
async function addChapterIfNotExists(chapter) {
console.log("adding chapter: ", chapter);
// don't add chapter if it exists
const existingChapter = await getChapter(chapter);
if (existingChapter) {
console.log("Chapter already exists: ", chapter);
return;
}
// insert SQL query
const query = `INSERT INTO chapterLookup (name) VALUES (?)`;
// attempt to insert chapter into table
try {
await pool.query(query, [chapter]);
console.log(`Successfully added chapter: ${chapter}`);
} catch (error) {
console.error(`Error adding chapter: ${chapter}`, error);
throw error;
}
}
/*
Function to get chapter, used to check if it exists in the database or not
*/
async function getChapter(name) {
// SQL queery to get a certain chapter
const query = "SELECT * FROM chapterLookup WHERE name = ?"
try {
console.log("Getting chapter: ", name);
const [rows] = await pool.query(query, [name]);
if (rows.length > 0) {
console.log("Found chapter: ", name);
return rows[0];
}
else {
console.log("Chapter not found: ", name);
return null;
}
} catch (error) {
console.error(`Error fetching chapter with ID ${name}:`, error);
}
}
/*
Checks if table already exists
*/
async function checkChapterTableExistence() {
try {
const [rows] = await pool.query("SHOW TABLES LIKE 'chapterLookup'");
if (rows.length > 0) {
console.log("Table `chapterLookup` exists");
} else {
console.log("Table `chapterLookup` does not exist");
}
} catch (error) {
console.error("Error checking table existence:", error);
}
}
module.exports = { checkChapterTableExistence, addChapterIfNotExists, getChapter };
\ No newline at end of file
......@@ -8,7 +8,7 @@ stateLookup database.
/*
Function to add a state to the database
state must be a string and
state must be a string
*/
async function addStateIfNotExists(state) {
console.log("adding state: ", state);
......@@ -53,7 +53,7 @@ async function getState(name) {
}
}
async function checkTableExistence() {
async function checkStateTableExistence() {
try {
const [rows] = await pool.query("SHOW TABLES LIKE 'stateLookup'");
if (rows.length > 0) {
......@@ -66,4 +66,4 @@ async function checkTableExistence() {
}
}
module.exports = { checkTableExistence, addStateIfNotExists, getState };
module.exports = { checkStateTableExistence, addStateIfNotExists, getState };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment