Move system relations out of db

This commit is contained in:
rijkvanzanten
2020-10-29 13:29:07 -04:00
parent ee9baf02c0
commit d3ca132fad
6 changed files with 48 additions and 11 deletions

View File

@@ -1,8 +1,9 @@
import { QueryBuilder } from 'knex';
import { Query, Filter } from '../types';
import { Query, Filter, Relation } from '../types';
import { schemaInspector } from '../database';
import Knex from 'knex';
import { clone, isPlainObject } from 'lodash';
import { systemRelationRows } from '../database/system-data/relations';
export default async function applyQuery(
knex: Knex,
@@ -58,7 +59,10 @@ export async function applyFilter(
rootFilter: Filter,
collection: string
) {
const relations = await knex.select('*').from('directus_relations');
const relations: Relation[] = [
...(await knex.select('*').from('directus_relations')),
...systemRelationRows,
];
addWhereClauses(rootQuery, rootFilter, collection);
addJoins(rootQuery, rootFilter, collection);

View File

@@ -17,6 +17,7 @@ import Knex from 'knex';
import SchemaInspector from 'knex-schema-inspector';
import { getRelationType } from '../utils/get-relation-type';
import { systemFieldRows } from '../database/system-data/fields';
import { systemRelationRows } from '../database/system-data/relations';
type GetASTOptions = {
accountability?: Accountability | null;
@@ -40,7 +41,10 @@ export default async function getASTFromQuery(
* we might not need al this info at all times, but it's easier to fetch it all once, than trying to fetch it for every
* requested field. @todo look into utilizing graphql/dataloader for this purpose
*/
const relations = await knex.select<Relation[]>('*').from('directus_relations');
const relations = [
...(await knex.select<Relation[]>('*').from('directus_relations')),
...systemRelationRows,
];
const permissions =
accountability && accountability.admin !== true