1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-23 14:59:36 +02:00

Added new regions

This commit is contained in:
Sean Morley 2024-05-25 14:23:59 +00:00
parent 8f0ae40534
commit fb749d0cb2
7 changed files with 188 additions and 61 deletions

View file

@ -36,7 +36,12 @@ export async function insertData() {
('Australia', 'au', 'Oceania'), ('Australia', 'au', 'Oceania'),
('New Zealand', 'nz', 'Oceania'), ('New Zealand', 'nz', 'Oceania'),
('South Africa', 'za', 'Africa'), ('South Africa', 'za', 'Africa'),
('Egypt', 'eg', 'Africa') ('Egypt', 'eg', 'Africa'),
('Sweden', 'se', 'Europe'),
('Ireland', 'ie', 'Europe'),
('Spain', 'es', 'Europe'),
('Switzerland', 'ch', 'Europe'),
('Italy', 'it', 'Europe')
ON CONFLICT (country_code) DO NOTHING;`); ON CONFLICT (country_code) DO NOTHING;`);
console.log("Inserting regions..."); console.log("Inserting regions...");
@ -94,6 +99,8 @@ export async function insertData() {
ON CONFLICT (id) DO NOTHING; ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Canada regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('CA-AB', 'Alberta', 'ca'), ('CA-AB', 'Alberta', 'ca'),
@ -113,6 +120,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Germany regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('DE-BW', 'Baden-Württemberg', 'de'), ('DE-BW', 'Baden-Württemberg', 'de'),
@ -136,6 +145,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting France regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('FR-ARA', 'Auvergne-Rhône-Alpes', 'fr'), ('FR-ARA', 'Auvergne-Rhône-Alpes', 'fr'),
@ -161,6 +172,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting United Kingdom regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('GB-ENG', 'England', 'gb'), ('GB-ENG', 'England', 'gb'),
@ -172,6 +185,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Argentina regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('AR-C', 'Ciudad Autónoma de Buenos Aires', 'ar'), ('AR-C', 'Ciudad Autónoma de Buenos Aires', 'ar'),
@ -203,6 +218,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inerting Mexico regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('MX-AGU', 'Aguascalientes', 'mx'), ('MX-AGU', 'Aguascalientes', 'mx'),
@ -241,6 +258,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Japan regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('JP-01', 'Hokkaido', 'jp'), ('JP-01', 'Hokkaido', 'jp'),
@ -295,6 +314,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting China regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('CN-BJ', 'Beijing', 'cn'), ('CN-BJ', 'Beijing', 'cn'),
@ -333,6 +354,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting India regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('IN-AN', 'Andaman and Nicobar Islands', 'in'), ('IN-AN', 'Andaman and Nicobar Islands', 'in'),
@ -376,6 +399,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Australia regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('AU-NSW', 'New South Wales', 'au'), ('AU-NSW', 'New South Wales', 'au'),
@ -392,6 +417,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting New Zealand regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('NZ-N', 'Northland', 'nz'), ('NZ-N', 'Northland', 'nz'),
@ -416,6 +443,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting South Africa regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('ZA-EC', 'Eastern Cape', 'za'), ('ZA-EC', 'Eastern Cape', 'za'),
@ -433,6 +462,8 @@ ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Egypt regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('EG-ALX', 'Alexandria', 'eg'), ('EG-ALX', 'Alexandria', 'eg'),
@ -464,10 +495,10 @@ ON CONFLICT (id) DO NOTHING;
('EG-ESI', 'Ismailia', 'eg') ('EG-ESI', 'Ismailia', 'eg')
ON CONFLICT (id) DO NOTHING; ON CONFLICT (id) DO NOTHING;
`); `);
console.log("Inserting Brazil regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code) await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES VALUES
('BR-AC', 'Acre', 'br'), ('BR-AC', 'Acre', 'br'),
@ -497,9 +528,129 @@ VALUES
('BR-SP', 'São Paulo', 'br'), ('BR-SP', 'São Paulo', 'br'),
('BR-SE', 'Sergipe', 'br'), ('BR-SE', 'Sergipe', 'br'),
('BR-TO', 'Tocantins', 'br') ('BR-TO', 'Tocantins', 'br')
ON CONFLICT (id) DO NOTHING; ON CONFLICT (id) DO NOTHING;
`);
console.log("Inserting Sweden regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES
('SE-AB', 'Stockholm', 'se'),
('SE-AC', 'Västerbotten', 'se'),
('SE-BD', 'Norrbotten', 'se'),
('SE-C', 'Uppsala', 'se'),
('SE-D', 'Södermanland', 'se'),
('SE-E', 'Östergötland', 'se'),
('SE-F', 'Jönköping', 'se'),
('SE-G', 'Kronoberg', 'se'),
('SE-H', 'Kalmar', 'se'),
('SE-I', 'Gotland', 'se'),
('SE-K', 'Blekinge', 'se'),
('SE-M', 'Skåne', 'se'),
('SE-N', 'Halland', 'se'),
('SE-O', 'Västra Götaland', 'se'),
('SE-S', 'Värmland', 'se'),
('SE-T', 'Örebro', 'se'),
('SE-U', 'Västmanland', 'se'),
('SE-W', 'Dalarna', 'se'),
('SE-X', 'Gävleborg', 'se'),
('SE-Y', 'Västernorrland', 'se'),
('SE-Z', 'Jämtland', 'se')
ON CONFLICT (id) DO NOTHING;
`);
console.log("Inserting Ireland regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES
('IE-C', 'Connacht', 'ie'),
('IE-L', 'Leinster', 'ie'),
('IE-M', 'Munster', 'ie'),
('IE-U', 'Ulster', 'ie')
ON CONFLICT (id) DO NOTHING;
`);
console.log("Inserting Spain regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES
('ES-AN', 'Andalucía', 'es'),
('ES-AR', 'Aragón', 'es'),
('ES-AS', 'Asturias', 'es'),
('ES-CB', 'Cantabria', 'es'),
('ES-CL', 'Castilla y León', 'es'),
('ES-CM', 'Castilla-La Mancha', 'es'),
('ES-CN', 'Canarias', 'es'),
('ES-CT', 'Cataluña', 'es'),
('ES-EX', 'Extremadura', 'es'),
('ES-GA', 'Galicia', 'es'),
('ES-IB', 'Islas Baleares', 'es'),
('ES-MD', 'Madrid', 'es'),
('ES-MC', 'Murcia', 'es'),
('ES-NC', 'Navarra', 'es'),
('ES-PV', 'País Vasco', 'es'),
('ES-RI', 'La Rioja', 'es'),
('ES-VC', 'Comunidad Valenciana', 'es')
ON CONFLICT (id) DO NOTHING;
`);
console.log("Inserting Switzerland regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES
('CH-AG', 'Aargau', 'ch'),
('CH-AR', 'Appenzell Ausserrhoden', 'ch'),
('CH-AI', 'Appenzell Innerrhoden', 'ch'),
('CH-BL', 'Basel-Landschaft', 'ch'),
('CH-BS', 'Basel-Stadt', 'ch'),
('CH-BE', 'Bern', 'ch'),
('CH-FR', 'Fribourg', 'ch'),
('CH-GE', 'Genève', 'ch'),
('CH-GL', 'Glarus', 'ch'),
('CH-GR', 'Graubünden', 'ch'),
('CH-JU', 'Jura', 'ch'),
('CH-LU', 'Luzern', 'ch'),
('CH-NE', 'Neuchâtel', 'ch'),
('CH-NW', 'Nidwalden', 'ch'),
('CH-OW', 'Obwalden', 'ch'),
('CH-SH', 'Schaffhausen', 'ch'),
('CH-SZ', 'Schwyz', 'ch'),
('CH-SO', 'Solothurn', 'ch'),
('CH-SG', 'St. Gallen', 'ch'),
('CH-TG', 'Thurgau', 'ch'),
('CH-TI', 'Ticino', 'ch'),
('CH-UR', 'Uri', 'ch'),
('CH-VS', 'Valais', 'ch'),
('CH-VD', 'Vaud', 'ch'),
('CH-ZG', 'Zug', 'ch'),
('CH-ZH', 'Zürich', 'ch')
ON CONFLICT (id) DO NOTHING;
`);
console.log("Inserting Italy regions...");
await db.execute(sql`INSERT INTO "worldTravelCountryRegions" (id, name, country_code)
VALUES
('IT-65', 'Abruzzo', 'it'),
('IT-77', 'Basilicata', 'it'),
('IT-78', 'Calabria', 'it'),
('IT-72', 'Campania', 'it'),
('IT-45', 'Emilia-Romagna', 'it'),
('IT-36', 'Friuli Venezia Giulia', 'it'),
('IT-62', 'Lazio', 'it'),
('IT-42', 'Liguria', 'it'),
('IT-25', 'Lombardia', 'it'),
('IT-57', 'Marche', 'it'),
('IT-67', 'Molise', 'it'),
('IT-21', 'Piemonte', 'it'),
('IT-75', 'Puglia', 'it'),
('IT-88', 'Sardegna', 'it'),
('IT-82', 'Sicilia', 'it'),
('IT-52', 'Toscana', 'it'),
('IT-32', 'Trentino-Alto Adige', 'it'),
('IT-55', 'Umbria', 'it'),
('IT-23', 'Valle d''Aosta', 'it'),
('IT-34', 'Veneto', 'it')
ON CONFLICT (id) DO NOTHING;
`); `);
} }

View file

@ -1,20 +1,6 @@
import inspirationalQuotes from "./json/quotes.json"; import inspirationalQuotes from "./json/quotes.json";
import countryCodes from "./json/countries.json";
import type { Adventure } from "./utils/types"; import type { Adventure } from "./utils/types";
/**
* Converts a country code to its corresponding country name.
* @param countryCode - The country code to convert.
* @returns The country name if found, otherwise null.
*/
export function countryCodeToName(countryCode: string): string | null {
// Look up the country name using the provided country code
const countryName =
countryCodes[countryCode.toLowerCase() as keyof typeof countryCodes];
// Return the country name if found, otherwise return null
return countryName || null;
}
/** /**
* Generates the URL for a flag image based on the specified size and country code. * Generates the URL for a flag image based on the specified size and country code.
* @param size - The desired height of the flag image. Avaliable sizes: 20, 24, 40, 60, 80, 120, 240. * @param size - The desired height of the flag image. Avaliable sizes: 20, 24, 40, 60, 80, 120, 240.

View file

@ -1,17 +0,0 @@
{
"us": "United States",
"de": "Germany",
"fr": "France",
"gb": "United Kingdom",
"ar": "Argentina",
"mx": "Mexico",
"jp": "Japan",
"cn": "China",
"in": "India",
"au": "Australia",
"nz": "New Zealand",
"za": "South Africa",
"eg": "Egypt",
"ca": "Canada",
"br": "Brazil"
}

View file

@ -158,7 +158,7 @@
} }
</script> </script>
<div class="fixed bottom-4 right-4"> <div class="fixed bottom-4 right-4 z-[999]">
<div class="flex flex-row items-center justify-center gap-4"> <div class="flex flex-row items-center justify-center gap-4">
<div class="dropdown dropdown-top dropdown-end"> <div class="dropdown dropdown-top dropdown-end">
<div tabindex="0" role="button" class="btn m-1 size-16 btn-primary"> <div tabindex="0" role="button" class="btn m-1 size-16 btn-primary">

View file

@ -189,7 +189,7 @@
<SucessToast action={toastAction} /> <SucessToast action={toastAction} />
{/if} {/if}
<div class="fixed bottom-4 right-4"> <div class="fixed bottom-4 right-4 z-[999]">
<div class="flex flex-row items-center justify-center gap-4"> <div class="flex flex-row items-center justify-center gap-4">
<div class="dropdown dropdown-top dropdown-end"> <div class="dropdown dropdown-top dropdown-end">
<div tabindex="0" role="button" class="btn m-1 size-16 btn-primary"> <div tabindex="0" role="button" class="btn m-1 size-16 btn-primary">

View file

@ -1,19 +1,28 @@
import { db } from '$lib/db/db.server.js'; import { db } from "$lib/db/db.server.js";
import { userVisitedWorldTravel, worldTravelCountryRegions } from '$lib/db/schema.js'; import {
import { and, eq } from 'drizzle-orm'; userVisitedWorldTravel,
import type { PageServerLoad } from './$types'; worldTravelCountries,
worldTravelCountryRegions,
} from "$lib/db/schema.js";
import { and, eq } from "drizzle-orm";
import type { PageServerLoad } from "./$types";
export const load: PageServerLoad = async ({ params, locals }) => { export const load: PageServerLoad = async ({ params, locals }) => {
const { countrycode } = params; const { countrycode } = params;
let data = await db let data = await db
.select() .select()
.from(worldTravelCountryRegions) .from(worldTravelCountryRegions)
.where(eq(worldTravelCountryRegions.country_code, countrycode)) .where(eq(worldTravelCountryRegions.country_code, countrycode));
let visitedRegions: { id: number; userId: string; region_id: string; }[] = []; let countryName = await db
.select()
.from(worldTravelCountries)
.where(eq(worldTravelCountries.country_code, countrycode))
.execute();
let visitedRegions: { id: number; userId: string; region_id: string }[] = [];
if (locals.user) { if (locals.user) {
let countryCode = params.countrycode let countryCode = params.countrycode;
visitedRegions = await db visitedRegions = await db
.select() .select()
.from(userVisitedWorldTravel) .from(userVisitedWorldTravel)
@ -27,8 +36,9 @@ export const load: PageServerLoad = async ({ params, locals }) => {
} }
return { return {
regions : data, regions: data,
countrycode: countrycode, countrycode: countrycode,
visitedRegions: visitedRegions, visitedRegions: visitedRegions,
countryName: countryName[0].name,
}; };
} };

View file

@ -1,7 +1,6 @@
<script lang="ts"> <script lang="ts">
export let data; export let data;
import AdventureCard from "$lib/components/AdventureCard.svelte"; import AdventureCard from "$lib/components/AdventureCard.svelte";
import { countryCodeToName } from "$lib";
import { getFlag } from "$lib"; import { getFlag } from "$lib";
import { goto } from "$app/navigation"; import { goto } from "$app/navigation";
import { onMount } from "svelte"; import { onMount } from "svelte";
@ -57,7 +56,7 @@
</script> </script>
<h1 class="text-center text-4xl font-bold"> <h1 class="text-center text-4xl font-bold">
Regions in {countryCodeToName(data.countrycode)} Regions in {data.countryName}
<img <img
src={getFlag(40, data.countrycode)} src={getFlag(40, data.countrycode)}
class="inline-block -mt-1 mr-1" class="inline-block -mt-1 mr-1"
@ -109,11 +108,9 @@
{/if} {/if}
<svelte:head> <svelte:head>
<title>{countryCodeToName(data.countrycode)} Regions | AdventureLog</title> <title>{data.countryName} Regions | AdventureLog</title>
<meta <meta
name="description" name="description"
content="Explore the regions in {countryCodeToName( content="Explore the regions in {data.countryName} and add them to your visited list!"
data.countrycode
)} and add them to your visited list!"
/> />
</svelte:head> </svelte:head>