ci: add api path
This commit is contained in:
@@ -1,13 +1,14 @@
|
|||||||
FROM node:22
|
FROM node:22
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json ./
|
COPY package.json package-lock.json ./
|
||||||
COPY package-lock.json ./
|
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
EXPOSE 3000
|
ENV HOST=0.0.0.0
|
||||||
CMD ["npm", "start"]
|
ENV PORT=4321
|
||||||
|
EXPOSE 4321
|
||||||
|
CMD ["node", "./dist/server/entry.mjs"]
|
||||||
@@ -2,6 +2,16 @@ import createClient from 'openapi-fetch'
|
|||||||
|
|
||||||
import { type schema } from './schema'
|
import { type schema } from './schema'
|
||||||
|
|
||||||
|
function getApiBaseUrl(): string {
|
||||||
|
if (typeof import.meta !== 'undefined' && import.meta.env?.PUBLIC_API_URL) {
|
||||||
|
return import.meta.env.PUBLIC_API_URL
|
||||||
|
}
|
||||||
|
if (typeof process !== 'undefined' && process.env.PUBLIC_API_URL) {
|
||||||
|
return process.env.PUBLIC_API_URL
|
||||||
|
}
|
||||||
|
return 'http://localhost:1337/api/'
|
||||||
|
}
|
||||||
|
|
||||||
export const client = createClient<schema>({
|
export const client = createClient<schema>({
|
||||||
baseUrl: 'http://localhost:1337/api/',
|
baseUrl: getApiBaseUrl(),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,50 +1,28 @@
|
|||||||
---
|
---
|
||||||
export const prerender = true
|
|
||||||
|
|
||||||
import Layout from '../layouts/Layout.astro'
|
import Layout from '../layouts/Layout.astro'
|
||||||
import '../styles/globals.css'
|
import '../styles/globals.css'
|
||||||
import { Header } from '../sections/Header'
|
import { Header } from '../sections/Header'
|
||||||
import { Footer } from '../sections/Footer'
|
import { Footer } from '../sections/Footer'
|
||||||
import { Enum_Category_Group } from '../graphql/graphql'
|
import { Enum_Category_Group } from '../graphql/graphql'
|
||||||
import { CategoryView } from '../views/CategoryView'
|
import { CategoryView } from '../views/CategoryView'
|
||||||
import type { MenuItemsQuery } from '../graphql/graphql'
|
|
||||||
import type { SiteConfigContact } from '../lib/cms/contact/types'
|
|
||||||
import { siteConfigQuery } from '../graphql-documents/site-config.gql.generated'
|
import { siteConfigQuery } from '../graphql-documents/site-config.gql.generated'
|
||||||
import { menuItemsQuery } from '../graphql-documents/menu-items.gql.generated'
|
import { menuItemsQuery } from '../graphql-documents/menu-items.gql.generated'
|
||||||
import { categoryQuery } from '../graphql-documents/category.gql.generated'
|
import { categoryQuery } from '../graphql-documents/category.gql.generated'
|
||||||
|
|
||||||
export async function getStaticPaths() {
|
const [siteResult, menuItemsResult] = await Promise.all([siteConfigQuery.execute(), menuItemsQuery.execute()])
|
||||||
const [siteResult, menuItemsResult] = await Promise.all([siteConfigQuery.execute(), menuItemsQuery.execute()])
|
if (siteResult.errors?.length) {
|
||||||
if (siteResult.errors?.length) {
|
|
||||||
throw new Error(siteResult.errors.map(e => e.message).join(', '))
|
throw new Error(siteResult.errors.map(e => e.message).join(', '))
|
||||||
}
|
}
|
||||||
const contacts = siteResult.data?.siteConfig?.contacts?.filter(c => c != null) ?? []
|
const contacts = siteResult.data?.siteConfig?.contacts?.filter(c => c != null) ?? []
|
||||||
if (menuItemsResult.errors?.length) {
|
if (menuItemsResult.errors?.length) {
|
||||||
throw new Error(menuItemsResult.errors.map(e => e.message).join(', '))
|
throw new Error(menuItemsResult.errors.map(e => e.message).join(', '))
|
||||||
}
|
}
|
||||||
const menuItems = (menuItemsResult.data?.categories?.filter(c => c != null) ?? []).sort(
|
const menuItems = (menuItemsResult.data?.categories?.filter(c => c != null) ?? []).sort(
|
||||||
(a, b) => a.sortOrder - b.sortOrder
|
(a, b) => a.sortOrder - b.sortOrder
|
||||||
)
|
)
|
||||||
const solutionCategories = menuItems.filter(c => c.group === Enum_Category_Group.Solution)
|
const solutionCategories = menuItems.filter(c => c.group === Enum_Category_Group.Solution)
|
||||||
const serviceCategories = menuItems.filter(c => c.group === Enum_Category_Group.Service)
|
const serviceCategories = menuItems.filter(c => c.group === Enum_Category_Group.Service)
|
||||||
|
|
||||||
return menuItems.map(category => ({
|
|
||||||
params: { slug: category.slug },
|
|
||||||
props: {
|
|
||||||
contacts,
|
|
||||||
solutionCategories,
|
|
||||||
serviceCategories,
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
contacts: SiteConfigContact[]
|
|
||||||
solutionCategories: NonNullable<MenuItemsQuery['categories'][number]>[]
|
|
||||||
serviceCategories: NonNullable<MenuItemsQuery['categories'][number]>[]
|
|
||||||
}
|
|
||||||
|
|
||||||
const { contacts, solutionCategories, serviceCategories } = Astro.props as Props
|
|
||||||
const slug = Astro.params.slug
|
const slug = Astro.params.slug
|
||||||
|
|
||||||
if (!slug) {
|
if (!slug) {
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
---
|
---
|
||||||
export const prerender = true
|
|
||||||
|
|
||||||
import Layout from '../layouts/Layout.astro'
|
import Layout from '../layouts/Layout.astro'
|
||||||
import '../styles/globals.css'
|
import '../styles/globals.css'
|
||||||
import { Header } from '../sections/Header'
|
import { Header } from '../sections/Header'
|
||||||
|
|||||||
Reference in New Issue
Block a user