UNPKG

venom-generator

Version:

In the way of code generation, complete the storage model->computation model (business API) transformation to achieve the goal of design and implementation

109 lines (100 loc) 3.52 kB
"use strict"; // 代码模板模块 Object.defineProperty(exports, "__esModule", { value: true }); const util = require("./util"); // 用于生产schema.ts文件code exports.SCHEMACODE = `import { makePrismaSchema } from 'nexus-prisma' import * as path from 'path' import datamodelInfo from './nexus-prisma' import { prisma } from './prisma-client' import * as generatedTypes from './resolvers' // 判断是否阿里云函数计算环境 let outputPath = process.env.SERVERNAME != undefined ? '/tmp/' : path.join(__dirname, './') export const gSchema = makePrismaSchema({ types: generatedTypes, prisma: { datamodelInfo, client: prisma }, outputs: { schema: outputPath + 'schema.graphql', typegen: outputPath + 'nexus.ts' }, nonNullDefaults: { input: true, output: true } })`; // 用于query.ts或mutation.ts是否导入权限code function calcAuthorizationCode(againCommon, calcAuthorization) { return againCommon && calcAuthorization !== '' ? `import { ${calcAuthorization} } from '../../poclicy/resolvers/poclicy'\n` : calcAuthorization !== '' ? `import { ${calcAuthorization} } from '../common/poclicy/resolvers/poclicy'\n` : ''; } exports.calcAuthorizationCode = calcAuthorizationCode; // 用于方法权限的code function calcAuthorizationMethodCode(checkCalcAuthorization, calcAuthorization, authAud, methodName) { return checkCalcAuthorization === true ? `await ${calcAuthorization}(${authAud}, '${methodName}', ctx)` : '// 无须检查权限'; } exports.calcAuthorizationMethodCode = calcAuthorizationMethodCode; // 用于生产schema.ts文件code function schemaCode(server, imServer, typeDef, gSchema, resolver) { return `import { makePrismaSchema } from 'nexus-prisma' import * as path from 'path' import datamodelInfo from './nexus-prisma' import { prisma } from './prisma-client' import * as generatedTypes from './resolvers' import { mergeSchemas } from 'graphql-tools' ${imServer} // 判断是否阿里云函数计算环境 let outputPath = process.env.SERVERNAME != undefined ? '/tmp/' : path.join(__dirname, './') export const ${server}gSchema = makePrismaSchema({ types: generatedTypes, prisma: { datamodelInfo, client: prisma }, outputs: { schema: outputPath + 'schema.graphql', typegen: outputPath + 'nexus.ts' }, nonNullDefaults: { input: true, output: true } }) const typeDefs = \`${typeDef}\` export const gSchema = mergeSchemas({ schemas: [${server}gSchema, ${gSchema} typeDefs], resolvers: [ ${util.trim(util.trim(resolver, '\n', 'right'), ',', 'right')} ] })`; } exports.schemaCode = schemaCode; // index.ts文件code function indexCode(server, poclicy, context) { return `import { IncomingMessage, ServerResponse } from 'http' import { ApolloServer } from 'apollo-server-micro' import {gSchema as schema } from './generated/schema' import { prisma as p${server} } from './generated/prisma-client' ${poclicy} interface GContext { readonly req: IncomingMessage readonly res: ServerResponse } const apolloServer = new ApolloServer({ schema, context: (request: GContext) => { //从HTTP Headers处,取出token{"Authorization": "Bearer $token"} let token = '' if (request.req.headers.authorization != null) { token = request.req.headers.authorization.replace('Bearer ', '') } return { ${context} } } }) export default apolloServer.createHandler()`; } exports.indexCode = indexCode; //# sourceMappingURL=code.js.map