-
Notifications
You must be signed in to change notification settings - Fork 96
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(api)!: dedupe career site and seo settings
- Loading branch information
1 parent
e7d9924
commit 6009934
Showing
8 changed files
with
87 additions
and
128 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,25 @@ | ||
import { z } from 'zod'; | ||
import { type GeneralSettings } from '~~/shared/schemas/setting'; | ||
import { | ||
type SEOConfig, | ||
type CareerSiteConfig, | ||
} from '~~/shared/schemas/setting'; | ||
import { settings_memoryStorage } from '~~/server/utils/storage'; | ||
|
||
const settingsLookupSchema = z.object({ | ||
config: z.enum(['seoConfig', 'careerSiteConfig']).optional(), | ||
}); | ||
|
||
export default defineEventHandler(async (event) => { | ||
const query = await getValidatedQuery(event, settingsLookupSchema.parse); | ||
const queries = query.config | ||
? [query.config] | ||
: ['seoConfig', 'careerSiteConfig']; | ||
|
||
export default defineEventHandler(async () => { | ||
if (IS_DEV) { | ||
console.log('fetching public settings. queries:', queries); | ||
console.log('fetching public settings'); | ||
} | ||
|
||
const settings: GeneralSettings = { | ||
const settings = { | ||
careerSite: {}, | ||
seo: {}, | ||
} as GeneralSettings; // Ignore validation errors here. | ||
} as { careerSite: CareerSiteConfig; seo: SEOConfig }; | ||
|
||
for (let index = 0; index < queries.length; index++) { | ||
const query = queries[index]; | ||
let value: any; | ||
switch (query) { | ||
case 'seoConfig': | ||
value = await settings_memoryStorage.getItem(query); | ||
settings.seo = value as GeneralSettings['seo']; | ||
break; | ||
case 'careerSiteConfig': | ||
value = await settings_memoryStorage.getItem(query); | ||
settings.careerSite = value as GeneralSettings['careerSite']; | ||
break; | ||
default: | ||
throw createError({ | ||
statusCode: 404, | ||
statusMessage: `no config with key ${query} found`, | ||
}); | ||
} | ||
} | ||
settings.seo = (await settings_memoryStorage.getItem( | ||
'seoConfig' | ||
)) as SEOConfig; | ||
settings.careerSite = (await settings_memoryStorage.getItem( | ||
'careerSiteConfig' | ||
)) as CareerSiteConfig; | ||
|
||
return settings; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import { type CareerSiteConfig } from '~~/shared/schemas/setting'; | ||
import authenticateAdminRequest from '~~/server/utils/admin'; | ||
|
||
export default defineEventHandler(async (event) => { | ||
await authenticateAdminRequest(event); | ||
|
||
return (await settings_memoryStorage.getItem( | ||
'careerSiteConfig' | ||
)) as CareerSiteConfig; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import { eq } from 'drizzle-orm'; | ||
import { careerSiteConfigSchema } from '~~/shared/schemas/setting'; | ||
import { metaDataTable } from '~~/server/db/schema'; | ||
import authenticateAdminRequest from '~~/server/utils/admin'; | ||
import { settings_memoryStorage } from '~~/server/utils/storage'; | ||
|
||
export default defineEventHandler(async (event) => { | ||
await authenticateAdminRequest(event); | ||
|
||
if (IS_DEV) { | ||
console.log('updating careerSiteConfig'); | ||
} | ||
|
||
const settingsUpdateRequest = await readValidatedBody( | ||
event, | ||
careerSiteConfigSchema.parse | ||
); | ||
|
||
const db = await useDatabase(); | ||
|
||
const careerSiteString = JSON.stringify(settingsUpdateRequest); | ||
await db | ||
.update(metaDataTable) | ||
.set({ value: careerSiteString, updatedAt: new Date() }) | ||
.where(eq(metaDataTable.key, 'careerSiteConfig')); | ||
settings_memoryStorage.setItem('careerSiteConfig', settingsUpdateRequest); | ||
}); |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import { type SEOConfig } from '~~/shared/schemas/setting'; | ||
import authenticateAdminRequest from '~~/server/utils/admin'; | ||
|
||
export default defineEventHandler(async (event) => { | ||
await authenticateAdminRequest(event); | ||
|
||
return (await settings_memoryStorage.getItem('seoConfig')) as SEOConfig; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import { eq } from 'drizzle-orm'; | ||
import { careerSiteConfigSchema } from '~~/shared/schemas/setting'; | ||
import { metaDataTable } from '~~/server/db/schema'; | ||
import authenticateAdminRequest from '~~/server/utils/admin'; | ||
import { settings_memoryStorage } from '~~/server/utils/storage'; | ||
|
||
export default defineEventHandler(async (event) => { | ||
await authenticateAdminRequest(event); | ||
|
||
if (IS_DEV) { | ||
console.log('updating seoConfig'); | ||
} | ||
|
||
const settingsUpdateRequest = await readValidatedBody( | ||
event, | ||
careerSiteConfigSchema.parse | ||
); | ||
|
||
const db = await useDatabase(); | ||
|
||
const careerSiteString = JSON.stringify(settingsUpdateRequest); | ||
await db | ||
.update(metaDataTable) | ||
.set({ value: careerSiteString, updatedAt: new Date() }) | ||
.where(eq(metaDataTable.key, 'seoConfig')); | ||
settings_memoryStorage.setItem('seoConfig', settingsUpdateRequest); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters