ci: generate graphql schema in GH action

This commit is contained in:
Elliot DeNolf
2023-02-01 15:17:48 -05:00
parent 678614b62b
commit 7720f452d3
5 changed files with 1551 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
import path from 'path';
import fs from 'fs';
import { generateGraphQLSchema } from '../src/bin/generateGraphQLSchema';
const [testConfigDir] = process.argv.slice(2);
const testDir = path.resolve(__dirname, testConfigDir);
setPaths(testDir);
generateGraphQLSchema();
// Set config path and TS output path using test dir
function setPaths(dir) {
const configPath = path.resolve(dir, 'config.ts');
if (fs.existsSync(configPath)) {
process.env.PAYLOAD_CONFIG_PATH = configPath;
return true;
}
return false;
}

View File

@@ -0,0 +1,84 @@
import path from 'path';
import type { CollectionConfig } from '../../src/collections/config/types';
import { buildConfig } from '../buildConfig';
export interface Relation {
id: string;
name: string;
}
const openAccess = {
create: () => true,
read: () => true,
update: () => true,
delete: () => true,
};
const collectionWithName = (collectionSlug: string): CollectionConfig => {
return {
slug: collectionSlug,
access: openAccess,
fields: [
{
name: 'name',
type: 'text',
},
],
};
};
export const slug = 'posts';
export const relationSlug = 'relation';
export default buildConfig({
graphQL: {
schemaOutputFile: path.resolve(__dirname, 'generated-schema.graphql'),
},
collections: [
{
slug,
access: openAccess,
fields: [
{
name: 'title',
type: 'text',
},
{
name: 'description',
type: 'text',
},
{
name: 'number',
type: 'number',
},
// Relationship
{
name: 'relationField',
type: 'relationship',
relationTo: relationSlug,
},
// Relation hasMany
{
name: 'relationHasManyField',
type: 'relationship',
relationTo: relationSlug,
hasMany: true,
},
// Relation multiple relationTo
{
name: 'relationMultiRelationTo',
type: 'relationship',
relationTo: [relationSlug, 'dummy'],
},
// Relation multiple relationTo hasMany
{
name: 'relationMultiRelationToHasMany',
type: 'relationship',
relationTo: [relationSlug, 'dummy'],
hasMany: true,
},
],
},
collectionWithName(relationSlug),
collectionWithName('dummy'),
],
});

File diff suppressed because it is too large Load Diff