ci: add api path

This commit is contained in:
Zotov Ivan Yuryevich
2026-05-01 19:02:18 +03:00
parent 8931d9514a
commit 58443e047e
4 changed files with 27 additions and 40 deletions

View File

@@ -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"]

View File

@@ -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(),
}) })

View File

@@ -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) {

View File

@@ -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'