Use environtment variable to config API URL

This commit is contained in:
schooltechx 2023-04-10 17:58:14 +07:00
parent b803beca10
commit e3c74bb25e
13 changed files with 51 additions and 27 deletions

View file

@ -8,6 +8,7 @@ node_modules
.eslintrc.cjs
.prettierrc
.pretieriignore
.env
README.md
Dockerfile
docker-compose.yaml

View file

@ -7,6 +7,9 @@ services:
# - "4025:80"
environment:
TZ: Asia/Bangkok
API_CMS_URL: "https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
API_QUALIFYING_URL: "https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
API_COMPETITIVE_URL: "/api"
labels:
- traefik.enable=true
- traefik.http.routers.bma-ehr-qualifying-exam-cms.rule=Host(`bma-qualifying.frappet.synology.me`)

View file

@ -29,7 +29,4 @@ export interface CMSInfo{
address:string;
divisions:{title:string,url:string}[];
institutes:{title:string,url:string}[];
}
export const cmsBase="https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
export const competitiveBase="/api"
export const qualifyingBase="https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
}

View file

@ -3,5 +3,5 @@
</script>
<div class="p-10">
<h1>{$page.error?.message}</h1>
<h1>{$page.status} {$page.error?.message}</h1>
</div>

View file

@ -1,7 +1,7 @@
import {cmsBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
const res = await fetch(cmsBase+"/home")
const res = await fetch(env.API_CMS_URL+"/home")
if(!res.ok)
{
console.log("load offline data instead")

View file

@ -1,23 +1,23 @@
import {cmsBase,qualifyingBase,competitiveBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import { error } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
import type {Exam} from '$lib/data/CMSDataType'
import dayjs from 'dayjs'
export const load: PageServerLoad = async ({fetch}) => {
let res = await fetch(cmsBase+"/home")
let res = await fetch(env.API_CMS_URL+"/home")
let info
if(!res.ok)
{
console.log("load offline CMS data instead")
console.log(res.status,"load offline CMS data instead")
info = (await import('$lib/data/info.json')).default
}else{
info = await res.json()
}
const {title,subtitle} = info
res = await fetch(cmsBase+"/content/home")
res = await fetch(env.API_CMS_URL+"/content/home")
if(!res.ok){
console.log("load offline home content instead")
console.log(res.status,"load offline home content instead")
const content = (await import('$lib/data/content/home.html?raw')).default
info = {content,image:"/images/pattern.png"}
}else{
@ -29,7 +29,8 @@ export const load: PageServerLoad = async ({fetch}) => {
async function loadExam(api_path:string,err_msg:string){
const res = await fetch(api_path)
if(!res.ok){
throw error(500, err_msg);
console.log(res.status,err_msg,res.statusText)
throw error(res.status, err_msg);
}
const exams:Exam[] = await res.json()
exams.forEach((e)=>{
@ -42,8 +43,8 @@ export const load: PageServerLoad = async ({fetch}) => {
}
return exams
}
const qualify_exams = loadExam(qualifyingBase+"/qualifying?limit=3",'ไม่สามารถอ่านรายการสอบคัดเลือกได้')
const competitive_exams = loadExam(competitiveBase+"/competitive?limit=3",'ไม่สามารถอ่านรายการสอบแข่งขันได้')
const qualify_exams = loadExam(env.API_QUALIFYING_URL +"/qualifying?limit=3",'ไม่สามารถอ่านรายการสอบคัดเลือกได้')
const competitive_exams = loadExam(env.API_COMPETITIVE_URL+"/competitive?limit=3",'ไม่สามารถอ่านรายการสอบแข่งขันได้')
return {title,subtitle,content,image, qualify_exams,competitive_exams };
};

View file

@ -1,8 +1,8 @@
import {cmsBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import type { PageServerLoad } from './$types';
import { error } from '@sveltejs/kit';
export const load = (async ({fetch}) => {
const res = await fetch(cmsBase+"/content/about")
const res = await fetch(env.API_CMS_URL+"/content/about")
if(!res.ok)
throw error(500, 'ไม่สามารถอ่านเนื้อหาหน้าเกี่ยวกับได้');
const {content} = await res.json()

View file

@ -0,0 +1,23 @@
import type { RequestEvent, RequestHandler } from './$types'
import {json} from '@sveltejs/kit'
export const GET: RequestHandler = async ({params}: RequestEvent) => {
let content = ""
let image
const page:string = params.page
switch (page) {
case "home":
content = (await import('$lib/data/content/home.html?raw')).default
image = "/images/pattern.png"
break;
case "qualifying":
content = (await import('$lib/data/content/qualifying.html?raw')).default
break;
case "competitive":
content = (await import('$lib/data/content/competitive.html?raw')).default
break;
case "about":
content = (await import('$lib/data/content/about.html?raw')).default
break;
}
return json({content,image})
}

View file

@ -1,11 +1,11 @@
import {competitiveBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import { error } from '@sveltejs/kit';
import type {CalendarEvent,Exam} from '$lib/data/CMSDataType'
import {getBgColorDict} from '$lib/utils'
import dayjs from 'dayjs'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
const res = await fetch(competitiveBase+"/competitive")
const res = await fetch(env.API_COMPETITIVE_URL+"/competitive")
if(!res.ok)
throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้');

View file

@ -1,11 +1,11 @@
import {competitiveBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import type {Exam} from '$lib/data/CMSDataType'
import { error } from '@sveltejs/kit'
import dayjs from 'dayjs'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({params,fetch}) => {
const id = params.id+""
const res = await fetch(competitiveBase+"/competitive/"+id)
const res = await fetch(env.API_COMPETITIVE_URL+"/competitive/"+id)
if(res.status==404){
throw error(404,{message:`ค้นหาข้อมูลสอบคัดเลือก ${id}ไม่พบ`})
}

View file

@ -1,11 +1,11 @@
import {qualifyingBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import { error } from '@sveltejs/kit';
import type {CalendarEvent,Exam} from '$lib/data/CMSDataType'
import {getBgColorDict} from '$lib/utils'
import dayjs from 'dayjs'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
const res = await fetch(qualifyingBase+"/qualifying")
const res = await fetch(env.API_QUALIFYING_URL+"/qualifying")
if(!res.ok)
throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้');
const exams:Exam[] = await res.json()
@ -21,8 +21,7 @@ export const load: PageServerLoad = async ({fetch}) => {
const url = "/qualifying/"+id
if(start){
ex.date = dayjs(start).format("DD MMM BBBB")
console.log({id,title,start,end,url,backgroundColor})
events.push({id,title,start,url,backgroundColor})
events.push({id,title,start,end,url,backgroundColor})
}
if(ex.exam_date){
events.push({id,"title":"วันสอบคัดเลือก","start":ex.exam_date,url,backgroundColor})

View file

@ -1,11 +1,11 @@
import {qualifyingBase} from '$lib/data/CMSDataType'
import { env } from '$env/dynamic/private'
import type {Exam} from '$lib/data/CMSDataType'
import { error } from '@sveltejs/kit'
import dayjs from 'dayjs'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({params,fetch}) => {
const id = params.id+""
const res = await fetch(qualifyingBase+"/qualifying/"+id)
const res = await fetch(env.API_QUALIFYING_URL+"/qualifying/"+id)
if(res.status==404){
throw error(404,{message:`ค้นหาข้อมูลสอบคัดเลือก ${id}ไม่พบ`})
}