Skip to content

Commit ce5b17d

Browse files
committed
feat(app): implement codebayu api for all service
1 parent c56ecac commit ce5b17d

File tree

33 files changed

+109
-399
lines changed

33 files changed

+109
-399
lines changed

.DS_Store

0 Bytes
Binary file not shown.

app/about/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { METADATA } from '@/common/constant/metadata'
1010
import { getRequestHeader } from '@/common/helpers'
1111
import { careerDto } from '@/common/helpers/dto'
1212
import { IResponseCodeBayuService } from '@/common/types'
13-
import { CareerProps, ICareerCMS } from '@/common/types/careers'
13+
import { ICareer, ICareerCMS } from '@/common/types/careers'
1414

1515
import About from '@/modules/about'
1616

@@ -37,7 +37,7 @@ export default async function AboutPage() {
3737
)
3838
}
3939

40-
async function getCareers(): Promise<CareerProps[]> {
40+
async function getCareers(): Promise<ICareer[]> {
4141
revalidatePath('/')
4242
const headers = getRequestHeader()
4343
const response = await axios.get(`${CODEBAYU_SERVICE}/career`, { headers })

app/experience/[slug]/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { METADATA } from '@/common/constant/metadata'
1010
import { getRequestHeader } from '@/common/helpers'
1111
import { careerDto } from '@/common/helpers/dto'
1212
import { IResponseCodeBayuService } from '@/common/types'
13-
import { CareerProps, ICareerCMS } from '@/common/types/careers'
13+
import { ICareer, ICareerCMS } from '@/common/types/careers'
1414

1515
import ExperienceDetail from '@/modules/experience'
1616

@@ -25,7 +25,7 @@ export const metadata: Metadata = {
2525

2626
export default async function ExperienceDetailPage({ params }: { params: { slug: string } }) {
2727
const careers = await getCareers()
28-
const career: CareerProps = careers.find(item => item.slug === params.slug) as CareerProps
28+
const career: ICareer = careers.find(item => item.slug === params.slug) as ICareer
2929
return (
3030
<>
3131
<Container data-aos="fade-left">
@@ -36,7 +36,7 @@ export default async function ExperienceDetailPage({ params }: { params: { slug:
3636
)
3737
}
3838

39-
async function getCareers(): Promise<CareerProps[]> {
39+
async function getCareers(): Promise<ICareer[]> {
4040
revalidatePath('/experience')
4141
const headers = getRequestHeader()
4242
const response = await axios.get(`${CODEBAYU_SERVICE}/career`, { headers })

app/learn/[content]/page.tsx

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
import { Metadata } from 'next'
2-
import { revalidatePath } from 'next/cache'
2+
import { unstable_noStore as noStore } from 'next/cache'
33

44
import BackButton from '@/components/elements/BackButton'
55
import Container from '@/components/elements/Container'
66
import PageHeading from '@/components/elements/PageHeading'
7-
import axios from 'axios'
7+
import { getLearns } from '@/services/codebayu'
88

9-
import { CODEBAYU_SERVICE } from '@/common/constant'
109
import { METADATA } from '@/common/constant/metadata'
11-
import { getRequestHeader } from '@/common/helpers'
12-
import { learnDto } from '@/common/helpers/dto'
13-
import { IResponseCodeBayuService } from '@/common/types'
14-
import { ILearn, ILearnCMS } from '@/common/types/learn'
1510

1611
import ContentLists from '@/modules/learn/components/ContentLists'
1712

@@ -25,6 +20,7 @@ type Props = {
2520
}
2621

2722
export async function generateMetadata({ params }: Props): Promise<Metadata> {
23+
noStore()
2824
const { content } = await getContent(params.content)
2925
return {
3026
title: `${content?.title} ${METADATA.exTitle}`,
@@ -61,15 +57,6 @@ export default async function LearnContentPage({ params }: LearnContentPage) {
6157
)
6258
}
6359

64-
async function getLearns(): Promise<ILearn[]> {
65-
revalidatePath('/learn')
66-
const headers = getRequestHeader()
67-
const response = await axios.get(`${CODEBAYU_SERVICE}/learn`, { headers })
68-
const data = response.data as IResponseCodeBayuService<ILearnCMS[]>
69-
if (data.statusCode !== 200) return []
70-
return data.data.map(learnDto)
71-
}
72-
7360
async function getContent(contentSlug: string) {
7461
const learns = await getLearns()
7562
const content = learns.find(item => item?.slug === contentSlug) || null

app/learn/page.tsx

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
import { Metadata } from 'next'
2-
import { revalidatePath } from 'next/cache'
2+
import { unstable_noStore as noStore } from 'next/cache'
33

44
import Container from '@/components/elements/Container'
55
import PageHeading from '@/components/elements/PageHeading'
6-
import axios from 'axios'
6+
import { getLearns } from '@/services/codebayu'
77

8-
import { CODEBAYU_SERVICE } from '@/common/constant'
98
import { METADATA } from '@/common/constant/metadata'
10-
import { getRequestHeader } from '@/common/helpers'
11-
import { learnDto } from '@/common/helpers/dto'
12-
import { IResponseCodeBayuService } from '@/common/types'
13-
import { ILearn, ILearnCMS } from '@/common/types/learn'
149

1510
import LearnModule from '@/modules/learn'
1611

@@ -28,6 +23,7 @@ const PAGE_DESCRIPTION =
2823
"It's not a course, it's my personal learning notes. But if you are interested, let's learn together."
2924

3025
export default async function LearnPage() {
26+
noStore()
3127
const learns = await getLearns()
3228
const filteredContents = learns.filter(content => content.is_show) || []
3329
return (
@@ -39,12 +35,3 @@ export default async function LearnPage() {
3935
</>
4036
)
4137
}
42-
43-
async function getLearns(): Promise<ILearn[]> {
44-
revalidatePath('/learn')
45-
const headers = getRequestHeader()
46-
const response = await axios.get(`${CODEBAYU_SERVICE}/learn`, { headers })
47-
const data = response.data as IResponseCodeBayuService<ILearnCMS[]>
48-
if (data.statusCode !== 200) return []
49-
return data.data.map(learnDto)
50-
}

app/me/page.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { Metadata } from 'next'
22

3-
import { getCodeBayuData } from '@/services/codebayu'
4-
import React from 'react'
3+
import { getCareers, getPromotions } from '@/services/codebayu'
54

65
import { METADATA } from '@/common/constant/metadata'
7-
import { CareerProps } from '@/common/types/careers'
6+
import { IAdsBanner } from '@/common/types/ads'
87

98
import MeSection from '@/modules/me'
109

@@ -19,10 +18,7 @@ export const metadata: Metadata = {
1918

2019
export default async function MePage() {
2120
const careers = await getCareers()
22-
return <MeSection careers={careers} />
23-
}
24-
25-
async function getCareers(): Promise<CareerProps[]> {
26-
const response = await getCodeBayuData()
27-
return response.careers
21+
const promotions = await getPromotions()
22+
const promotion = promotions.filter((item: IAdsBanner) => item.showingOn.includes('/me'))
23+
return <MeSection careers={careers} promotions={promotion} />
2824
}

app/page.tsx

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
import { Metadata } from 'next'
2-
import { revalidatePath } from 'next/cache'
2+
import { unstable_noStore as noStore } from 'next/cache'
33

44
import Container from '@/components/elements/Container'
5-
import axios from 'axios'
5+
import { getLearns, getPromotions, getServices } from '@/services/codebayu'
66

7-
import { CODEBAYU_SERVICE } from '@/common/constant'
87
import { METADATA } from '@/common/constant/metadata'
9-
import { getRequestHeader } from '@/common/helpers'
10-
import { learnDto } from '@/common/helpers/dto'
11-
import { IResponseCodeBayuService } from '@/common/types'
12-
import { ILearn, ILearnCMS } from '@/common/types/learn'
13-
import { IServices } from '@/common/types/services'
8+
import { IAdsBanner } from '@/common/types/ads'
149

1510
import Home from '@/modules/home'
1611

@@ -22,31 +17,16 @@ export const metadata: Metadata = {
2217
}
2318

2419
export default async function HomePage() {
20+
noStore()
2521
const learns = await getLearns()
2622
const services = await getServices()
23+
const promotions = await getPromotions()
24+
const promotion = promotions.find((item: IAdsBanner) => item.showingOn.includes('/'))
2725
return (
2826
<>
2927
<Container data-aos="fade-left">
30-
<Home learns={learns} services={services} />
28+
<Home learns={learns} services={services} promotion={promotion} />
3129
</Container>
3230
</>
3331
)
3432
}
35-
36-
async function getLearns(): Promise<ILearn[]> {
37-
revalidatePath('/')
38-
const headers = getRequestHeader()
39-
const response = await axios.get(`${CODEBAYU_SERVICE}/learn`, { headers })
40-
const data = response.data as IResponseCodeBayuService<ILearnCMS[]>
41-
if (data.statusCode !== 200) return []
42-
return data.data.map(learnDto)
43-
}
44-
45-
async function getServices(): Promise<IServices[]> {
46-
revalidatePath('/')
47-
const headers = getRequestHeader()
48-
const response = await axios.get(`${CODEBAYU_SERVICE}/service`, { headers })
49-
const data = response.data as IResponseCodeBayuService<IServices[]>
50-
if (data.statusCode !== 200) return []
51-
return data.data
52-
}

app/roadmap/page.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import { Metadata } from 'next'
22

33
import Container from '@/components/elements/Container'
44
import PageHeading from '@/components/elements/PageHeading'
5-
import { getCodeBayuData } from '@/services/codebayu'
5+
import { getCodeBayuData, getPromotions } from '@/services/codebayu'
66

77
import { METADATA } from '@/common/constant/metadata'
8+
import { IAdsBanner } from '@/common/types/ads'
89
import { IRoadmap } from '@/common/types/roadmap'
910

1011
import Roadmap from '@/modules/roadmap'
@@ -22,11 +23,13 @@ const PAGE_DESCRIPTION = 'Learning path recomendation and free course playlist'
2223

2324
export default async function RoadmapPage() {
2425
const roadmaps = await getRoadmaps()
26+
const promotions = await getPromotions()
27+
const promotion = promotions.find((item: IAdsBanner) => item.showingOn.includes('/roadmap'))
2528
return (
2629
<>
2730
<Container data-aos="fade-left">
2831
<PageHeading title={PAGE_TITLE} description={PAGE_DESCRIPTION} />
29-
<Roadmap roadmaps={roadmaps} />
32+
<Roadmap roadmaps={roadmaps} promotion={promotion} />
3033
</Container>
3134
</>
3235
)

common/libs/prisma.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

common/mocks/careers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { CareerProps } from '../types/careers'
1+
import { ICareer } from '../types/careers'
22

3-
export const careersMock: CareerProps[] = [
3+
export const careersMock: ICareer[] = [
44
{
55
position: 'Senior Frontend Engineer',
66
company: 'CodeBayu',

0 commit comments

Comments
 (0)