Use Fastify Mercurius and GraphQL contracts
Build Docker Image / build (push) Has been cancelled

This commit is contained in:
Ruslan Bakiev
2026-06-01 00:25:27 +05:00
parent a499e03401
commit aff1c63b44
5 changed files with 1091 additions and 1404 deletions
+28 -26
View File
@@ -1,36 +1,38 @@
import express from 'express'
import cors from 'cors'
import { ApolloServer } from '@apollo/server'
import { expressMiddleware } from '@as-integrations/express5'
import * as Sentry from '@sentry/node'
import { resolvers, typeDefs } from './schema.js'
import Fastify from "fastify";
import cors from "@fastify/cors";
import mercurius from "mercurius";
import * as Sentry from "@sentry/node";
import { resolvers, typeDefs } from "./schema.js";
const PORT = Number.parseInt(process.env.PORT || '8000', 10)
const SENTRY_DSN = process.env.SENTRY_DSN || ''
const corsOrigins = (process.env.CORS_ORIGINS || 'https://optovia.ru,https://app.optovia.ru')
.split(',')
.map(origin => origin.trim())
.filter(origin => origin.length > 0)
const PORT = Number.parseInt(process.env.PORT || "8000", 10);
const SENTRY_DSN = process.env.SENTRY_DSN || "";
const corsOrigins = (
process.env.CORS_ORIGINS || "https://optovia.ru,https://app.optovia.ru"
)
.split(",")
.map((origin) => origin.trim())
.filter((origin) => origin.length > 0);
if (SENTRY_DSN) {
Sentry.init({
dsn: SENTRY_DSN,
tracesSampleRate: 0.01,
release: process.env.RELEASE_VERSION || '1.0.0',
environment: process.env.ENVIRONMENT || 'production',
})
release: process.env.RELEASE_VERSION || "1.0.0",
environment: process.env.ENVIRONMENT || "production",
});
}
const app = express()
app.use(cors({ origin: corsOrigins, credentials: true }))
const app = Fastify();
await app.register(cors, { origin: corsOrigins, credentials: true });
await app.register(mercurius, {
schema: typeDefs,
resolvers,
path: "/graphql",
graphiql: true,
});
const server = new ApolloServer({ typeDefs, resolvers, introspection: true })
await server.start()
app.get("/health", async () => ({ status: "ok", service: "exchange" }));
app.use('/graphql', express.json(), expressMiddleware(server))
app.get('/health', (_, res) => { res.json({ status: 'ok', service: 'exchange' }) })
app.listen(PORT, '0.0.0.0', () => {
console.log(`Exchange server ready on port ${PORT}`)
console.log(' /graphql - suppliers, products, quotes')
})
await app.listen({ port: PORT, host: "0.0.0.0" });
console.log(`Exchange server ready on port ${PORT}`);
console.log(" /graphql - suppliers, products, quotes");