Skip to content

Commit

Permalink
Moving schema and relation types into shared package (#11179)
Browse files Browse the repository at this point in the history
* moving schema and relation types into shared package

* updating SchemaOverview imports

* removing duplicate import
  • Loading branch information
johnhuffsmith committed Jan 20, 2022
1 parent a38bcdd commit e7ada1f
Show file tree
Hide file tree
Showing 40 changed files with 95 additions and 125 deletions.
3 changes: 2 additions & 1 deletion api/src/auth/auth.ts
@@ -1,5 +1,6 @@
import { SchemaOverview } from '@directus/shared/types';
import { Knex } from 'knex';
import { AuthDriverOptions, SchemaOverview, User } from '../types';
import { AuthDriverOptions, User } from '../types';

export abstract class AuthDriver {
knex: Knex;
Expand Down
3 changes: 2 additions & 1 deletion api/src/cli/commands/bootstrap/index.ts
Expand Up @@ -6,8 +6,9 @@ import env from '../../../env';
import logger from '../../../logger';
import { getSchema } from '../../../utils/get-schema';
import { RolesService, UsersService, SettingsService } from '../../../services';

import getDatabase, { isInstalled, validateDatabaseConnection, hasDatabaseConnection } from '../../../database';
import { SchemaOverview } from '../../../types';
import { SchemaOverview } from '@directus/shared/types';
import { defaultAdminRole, defaultAdminUser } from '../../utils/defaults';

export default async function bootstrap({ skipAdminInit }: { skipAdminInit?: boolean }): Promise<void> {
Expand Down
@@ -1,7 +1,7 @@
import { Knex } from 'knex';
import SchemaInspector from 'knex-schema-inspector';
import logger from '../../logger';
import { RelationMeta } from '../../types';
import { RelationMeta } from '@directus/shared/types';
import { getDefaultIndexName } from '../../utils/get-default-index-name';

export async function up(knex: Knex): Promise<void> {
Expand Down
2 changes: 1 addition & 1 deletion api/src/database/run-ast.ts
@@ -1,7 +1,7 @@
import { Knex } from 'knex';
import { clone, cloneDeep, pick, uniq, merge } from 'lodash';
import { PayloadService } from '../services/payload';
import { Item, SchemaOverview } from '../types';
import { Item, SchemaOverview } from '@directus/shared/types';
import { AST, FieldNode, NestedCollectionNode, M2ONode } from '../types/ast';
import { applyFunctionToColumnName } from '../utils/apply-function-to-column-name';
import applyQuery from '../utils/apply-query';
Expand Down
2 changes: 1 addition & 1 deletion api/src/database/system-data/relations/index.ts
@@ -1,5 +1,5 @@
import { merge } from 'lodash';
import { RelationMeta } from '../../../types';
import { RelationMeta } from '@directus/shared/types';
import { requireYAML } from '../../../utils/require-yaml';

const systemData = requireYAML(require.resolve('./relations.yaml')) as {
Expand Down
12 changes: 2 additions & 10 deletions api/src/services/authentication.ts
Expand Up @@ -11,16 +11,8 @@ import { InvalidCredentialsException, InvalidOTPException, UserSuspendedExceptio
import { createRateLimiter } from '../rate-limiter';
import { ActivityService } from './activity';
import { TFAService } from './tfa';
import {
AbstractServiceOptions,
Action,
SchemaOverview,
Session,
User,
DirectusTokenPayload,
LoginResult,
} from '../types';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions, Action, Session, User, DirectusTokenPayload, LoginResult } from '../types';
import { Accountability, SchemaOverview } from '@directus/shared/types';
import { SettingsService } from './settings';
import { clone, cloneDeep } from 'lodash';
import { performance } from 'perf_hooks';
Expand Down
16 changes: 7 additions & 9 deletions api/src/services/authorization.ts
Expand Up @@ -4,17 +4,15 @@ import getDatabase from '../database';
import { ForbiddenException } from '../exceptions';
import { FailedValidationException } from '@directus/shared/exceptions';
import { validatePayload } from '@directus/shared/utils';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions, AST, FieldNode, Item, NestedCollectionNode, PrimaryKey } from '../types';
import {
AbstractServiceOptions,
AST,
FieldNode,
Item,
NestedCollectionNode,
PrimaryKey,
Query,
Aggregate,
Permission,
PermissionsAction,
Accountability,
SchemaOverview,
} from '../types';
import { Query, Aggregate, Permission, PermissionsAction } from '@directus/shared/types';
} from '@directus/shared/types';
import { ItemsService } from './items';
import { PayloadService } from './payload';

Expand Down
4 changes: 2 additions & 2 deletions api/src/services/collections.ts
Expand Up @@ -9,8 +9,8 @@ import { ForbiddenException, InvalidPayloadException } from '../exceptions';
import { FieldsService } from '../services/fields';
import { ItemsService } from '../services/items';
import Keyv from 'keyv';
import { AbstractServiceOptions, Collection, CollectionMeta, SchemaOverview, MutationOptions } from '../types';
import { Accountability, FieldMeta, RawField } from '@directus/shared/types';
import { AbstractServiceOptions, Collection, CollectionMeta, MutationOptions } from '../types';
import { Accountability, FieldMeta, RawField, SchemaOverview } from '@directus/shared/types';
import { Table } from 'knex-schema-inspector/dist/types/table';

export type RawCollection = {
Expand Down
5 changes: 2 additions & 3 deletions api/src/services/fields.ts
Expand Up @@ -11,9 +11,8 @@ import { ForbiddenException, InvalidPayloadException } from '../exceptions';
import { translateDatabaseError } from '../exceptions/database/translate';
import { ItemsService } from '../services/items';
import { PayloadService } from '../services/payload';
import { AbstractServiceOptions, SchemaOverview } from '../types';
import { Accountability } from '@directus/shared/types';
import { Field, FieldMeta, RawField, Type } from '@directus/shared/types';
import { AbstractServiceOptions } from '../types';
import { Field, FieldMeta, RawField, Type, Accountability, SchemaOverview } from '@directus/shared/types';
import getDefaultValue from '../utils/get-default-value';
import getLocalType from '../utils/get-local-type';
import { toArray } from '@directus/shared/utils';
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/graphql.ts
Expand Up @@ -33,7 +33,7 @@ import {
StringValueNode,
validate,
} from 'graphql';
import { Filter } from '@directus/shared/types';
import { Filter, SchemaOverview } from '@directus/shared/types';
import {
GraphQLJSON,
InputTypeComposer,
Expand All @@ -53,7 +53,7 @@ import { BaseException } from '@directus/shared/exceptions';
import { ForbiddenException, GraphQLValidationException, InvalidPayloadException } from '../exceptions';
import { getExtensionManager } from '../extensions';
import { Accountability, Query, Aggregate } from '@directus/shared/types';
import { AbstractServiceOptions, Action, GraphQLParams, Item, SchemaOverview } from '../types';
import { AbstractServiceOptions, Action, GraphQLParams, Item } from '../types';
import { getGraphQLType } from '../utils/get-graphql-type';
import { reduceSchema } from '../utils/reduce-schema';
import { sanitizeQuery } from '../utils/sanitize-query';
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/import.ts
@@ -1,7 +1,7 @@
import { Knex } from 'knex';
import getDatabase from '../database';
import { AbstractServiceOptions, SchemaOverview } from '../types';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions } from '../types';
import { Accountability, SchemaOverview } from '@directus/shared/types';
import { ForbiddenException, InvalidPayloadException, UnsupportedMediaTypeException } from '../exceptions';
import StreamArray from 'stream-json/streamers/StreamArray';
import { ItemsService } from './items';
Expand Down
3 changes: 1 addition & 2 deletions api/src/services/items.ts
Expand Up @@ -8,14 +8,13 @@ import emitter from '../emitter';
import env from '../env';
import { ForbiddenException } from '../exceptions';
import { translateDatabaseError } from '../exceptions/database/translate';
import { Accountability, Query, PermissionsAction } from '@directus/shared/types';
import { Accountability, Query, PermissionsAction, SchemaOverview } from '@directus/shared/types';
import {
AbstractService,
AbstractServiceOptions,
Action,
Item as AnyItem,
PrimaryKey,
SchemaOverview,
MutationOptions,
} from '../types';
import getASTFromQuery from '../utils/get-ast-from-query';
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/mail/index.ts
Expand Up @@ -6,8 +6,8 @@ import getDatabase from '../../database';
import env from '../../env';
import { InvalidPayloadException } from '../../exceptions';
import logger from '../../logger';
import { AbstractServiceOptions, SchemaOverview } from '../../types';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions } from '../../types';
import { Accountability, SchemaOverview } from '@directus/shared/types';
import getMailer from '../../mailer';
import { Transporter, SendMailOptions } from 'nodemailer';
import { Url } from '../../utils/url';
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/meta.ts
@@ -1,8 +1,8 @@
import { Knex } from 'knex';
import getDatabase from '../database';
import { ForbiddenException } from '../exceptions';
import { AbstractServiceOptions, SchemaOverview } from '../types';
import { Accountability, Query } from '@directus/shared/types';
import { AbstractServiceOptions } from '../types';
import { Accountability, Query, SchemaOverview } from '@directus/shared/types';
import { applyFilter, applySearch } from '../utils/apply-query';

export class MetaService {
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/payload.ts
Expand Up @@ -5,8 +5,8 @@ import { clone, cloneDeep, isObject, isPlainObject, omit, pick, isNil } from 'lo
import { v4 as uuidv4 } from 'uuid';
import getDatabase from '../database';
import { ForbiddenException, InvalidPayloadException } from '../exceptions';
import { AbstractServiceOptions, Item, PrimaryKey, SchemaOverview, Alterations } from '../types';
import { Accountability, Query } from '@directus/shared/types';
import { AbstractServiceOptions, Item, PrimaryKey, Alterations } from '../types';
import { Accountability, Query, SchemaOverview } from '@directus/shared/types';
import { toArray } from '@directus/shared/utils';
import { ItemsService } from './items';
import { unflatten } from 'flat';
Expand Down
5 changes: 2 additions & 3 deletions api/src/services/relations.ts
@@ -1,9 +1,7 @@
import { Knex } from 'knex';
import { systemRelationRows } from '../database/system-data/relations';
import { ForbiddenException, InvalidPayloadException } from '../exceptions';
import { AbstractServiceOptions, SchemaOverview, Relation, RelationMeta } from '../types';
import { Query } from '@directus/shared/types';
import { Accountability } from '@directus/shared/types';
import { SchemaOverview, Relation, RelationMeta, Accountability, Query } from '@directus/shared/types';
import { toArray } from '@directus/shared/utils';
import { ItemsService, QueryOptions } from './items';
import { PermissionsService } from './permissions';
Expand All @@ -13,6 +11,7 @@ import getDatabase, { getSchemaInspector } from '../database';
import { getDefaultIndexName } from '../utils/get-default-index-name';
import { getCache } from '../cache';
import Keyv from 'keyv';
import { AbstractServiceOptions } from '../types';

export class RelationsService {
knex: Knex;
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/server.ts
Expand Up @@ -12,8 +12,8 @@ import env from '../env';
import logger from '../logger';
import { rateLimiter } from '../middleware/rate-limiter';
import storage from '../storage';
import { AbstractServiceOptions, SchemaOverview } from '../types';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions } from '../types';
import { Accountability, SchemaOverview } from '@directus/shared/types';
import { toArray } from '@directus/shared/utils';
import getMailer from '../mailer';
import { SettingsService } from './settings';
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/specifications.ts
Expand Up @@ -15,8 +15,8 @@ import {
import { version } from '../../package.json';
import getDatabase from '../database';
import env from '../env';
import { AbstractServiceOptions, Collection, Relation, SchemaOverview } from '../types';
import { Accountability, Field, Type, Permission } from '@directus/shared/types';
import { AbstractServiceOptions, Collection } from '../types';
import { Accountability, Field, Type, Permission, SchemaOverview, Relation } from '@directus/shared/types';
import { getRelationType } from '../utils/get-relation-type';
import { CollectionsService } from './collections';
import { FieldsService } from './fields';
Expand Down
5 changes: 2 additions & 3 deletions api/src/services/users.ts
Expand Up @@ -6,9 +6,8 @@ import env from '../env';
import { FailedValidationException } from '@directus/shared/exceptions';
import { ForbiddenException, InvalidPayloadException, UnprocessableEntityException } from '../exceptions';
import { RecordNotUniqueException } from '../exceptions/database/record-not-unique';
import { AbstractServiceOptions, Item, PrimaryKey, SchemaOverview, MutationOptions } from '../types';
import { Query } from '@directus/shared/types';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions, Item, PrimaryKey, MutationOptions } from '../types';
import { Query, SchemaOverview, Accountability } from '@directus/shared/types';
import isUrlAllowed from '../utils/is-url-allowed';
import { toArray } from '@directus/shared/utils';
import { Url } from '../utils/url';
Expand Down
4 changes: 2 additions & 2 deletions api/src/services/utils.ts
Expand Up @@ -2,8 +2,8 @@ import { Knex } from 'knex';
import getDatabase from '../database';
import { systemCollectionRows } from '../database/system-data/collections';
import { ForbiddenException, InvalidPayloadException } from '../exceptions';
import { AbstractServiceOptions, PrimaryKey, SchemaOverview } from '../types';
import { Accountability } from '@directus/shared/types';
import { AbstractServiceOptions, PrimaryKey } from '../types';
import { Accountability, SchemaOverview } from '@directus/shared/types';

export class UtilsService {
knex: Knex;
Expand Down
3 changes: 1 addition & 2 deletions api/src/types/ast.ts
@@ -1,5 +1,4 @@
import { Query } from '@directus/shared/types';
import { Relation } from './relation';
import { Query, Relation } from '@directus/shared/types';

export type M2ONode = {
type: 'm2o';
Expand Down
2 changes: 1 addition & 1 deletion api/src/types/auth.ts
@@ -1,5 +1,5 @@
import { SchemaOverview } from '@directus/shared/types';
import { Knex } from 'knex';
import { SchemaOverview } from './schema';

export interface AuthDriverOptions {
knex: Knex;
Expand Down
3 changes: 1 addition & 2 deletions api/src/types/extensions.ts
@@ -1,4 +1,4 @@
import { Accountability } from '@directus/shared/types';
import { Accountability, SchemaOverview } from '@directus/shared/types';
import { Router } from 'express';
import { Knex } from 'knex';
import { Logger } from 'pino';
Expand All @@ -7,7 +7,6 @@ import * as exceptions from '../exceptions';
import * as services from '../services';
import { Emitter } from '../emitter';
import { getSchema } from '../utils/get-schema';
import { SchemaOverview } from './schema';

export type ExtensionContext = {
services: typeof services;
Expand Down
2 changes: 0 additions & 2 deletions api/src/types/index.ts
Expand Up @@ -9,9 +9,7 @@ export * from './graphql';
export * from './items';
export * from './meta';
export * from './migration';
export * from './relation';
export * from './revision';
export * from './schema';
export * from './services';
export * from './snapshot';
export * from './webhooks';
27 changes: 0 additions & 27 deletions api/src/types/relation.ts

This file was deleted.

4 changes: 1 addition & 3 deletions api/src/types/services.ts
@@ -1,8 +1,6 @@
import { Knex } from 'knex';
import { SchemaOverview } from '../types';
import { Accountability } from '@directus/shared/types';
import { Accountability, Query, SchemaOverview } from '@directus/shared/types';
import { Item, PrimaryKey } from './items';
import { Query } from '@directus/shared/types';

export type AbstractServiceOptions = {
knex?: Knex;
Expand Down
3 changes: 1 addition & 2 deletions api/src/types/snapshot.ts
@@ -1,6 +1,5 @@
import { Collection } from './collection';
import { Relation, RelationMeta } from './relation';
import { Field, FieldMeta } from '@directus/shared/types';
import { Relation, RelationMeta, Field, FieldMeta } from '@directus/shared/types';
import { Diff } from 'deep-diff';

export type Snapshot = {
Expand Down
11 changes: 9 additions & 2 deletions api/src/utils/apply-query.ts
Expand Up @@ -3,8 +3,15 @@ import { clone, cloneDeep, get, isPlainObject, set } from 'lodash';
import { customAlphabet } from 'nanoid';
import validate from 'uuid-validate';
import { InvalidQueryException } from '../exceptions';
import { Relation, RelationMeta, SchemaOverview } from '../types';
import { Aggregate, Filter, LogicalFilterAND, Query } from '@directus/shared/types';
import {
Aggregate,
Filter,
LogicalFilterAND,
Query,
Relation,
RelationMeta,
SchemaOverview,
} from '@directus/shared/types';
import { getColumn } from './get-column';
import { getRelationType } from './get-relation-type';
import { getHelpers } from '../database/helpers';
Expand Down
4 changes: 2 additions & 2 deletions api/src/utils/apply-snapshot.ts
@@ -1,4 +1,4 @@
import { Snapshot, SnapshotDiff, SchemaOverview, Relation } from '../types';
import { Snapshot, SnapshotDiff } from '../types';
import { getSnapshot } from './get-snapshot';
import { getSnapshotDiff } from './get-snapshot-diff';
import { Knex } from 'knex';
Expand All @@ -7,7 +7,7 @@ import { getSchema } from './get-schema';
import { CollectionsService, FieldsService, RelationsService } from '../services';
import { set } from 'lodash';
import { DiffNew } from 'deep-diff';
import { Field } from '@directus/shared/types';
import { Field, Relation, SchemaOverview } from '@directus/shared/types';
import logger from '../logger';

export async function applySnapshot(
Expand Down
5 changes: 2 additions & 3 deletions api/src/utils/get-ast-from-query.ts
Expand Up @@ -4,9 +4,8 @@

import { Knex } from 'knex';
import { cloneDeep, mapKeys, omitBy, uniq } from 'lodash';
import { Accountability } from '@directus/shared/types';
import { AST, FieldNode, NestedCollectionNode, SchemaOverview } from '../types';
import { Query, PermissionsAction } from '@directus/shared/types';
import { AST, FieldNode, NestedCollectionNode } from '../types';
import { Query, PermissionsAction, Accountability, SchemaOverview } from '@directus/shared/types';
import { getRelationType } from '../utils/get-relation-type';

type GetASTOptions = {
Expand Down
3 changes: 1 addition & 2 deletions api/src/utils/get-permissions.ts
@@ -1,4 +1,4 @@
import { Permission, Accountability } from '@directus/shared/types';
import { Permission, Accountability, SchemaOverview } from '@directus/shared/types';
import { deepMap, parseFilter } from '@directus/shared/utils';
import { cloneDeep } from 'lodash';
import getDatabase from '../database';
Expand All @@ -10,7 +10,6 @@ import { RolesService } from '../services/roles';
import { getCache } from '../cache';
import hash from 'object-hash';
import env from '../env';
import { SchemaOverview } from '../types';

export async function getPermissions(accountability: Accountability, schema: SchemaOverview) {
const database = getDatabase();
Expand Down

0 comments on commit e7ada1f

Please sign in to comment.