Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • fhurtado14/corps-directory
1 result
Show changes
Commits on Source (2)
......@@ -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 };