Skip to content

Commit

Permalink
chore(plugin-multi-tenant): add better defaults for imported componen…
Browse files Browse the repository at this point in the history
…ts (#11030)

Creates a default variables file to use in exported components.
Extension of #10975.
  • Loading branch information
JarrodMFlesch authored Feb 6, 2025
1 parent a63a3d0 commit ec593b4
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 17 deletions.
6 changes: 6 additions & 0 deletions packages/plugin-multi-tenant/src/defaults.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export const defaults = {
tenantCollectionSlug: 'tenants',
tenantFieldName: 'tenant',
tenantsArrayFieldName: 'tenants',
tenantsArrayTenantFieldName: 'tenant',
}
5 changes: 3 additions & 2 deletions packages/plugin-multi-tenant/src/fields/tenantField/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { type RelationshipField } from 'payload'
import { APIError } from 'payload'

import { defaults } from '../../defaults.js'
import { getCollectionIDType } from '../../utilities/getCollectionIDType.js'
import { getTenantFromCookie } from '../../utilities/getTenantFromCookie.js'

Expand All @@ -12,10 +13,10 @@ type Args = {
unique: boolean
}
export const tenantField = ({
name,
name = defaults.tenantFieldName,
access = undefined,
debug,
tenantsCollectionSlug,
tenantsCollectionSlug = defaults.tenantCollectionSlug,
unique,
}: Args): RelationshipField => ({
name,
Expand Down
26 changes: 18 additions & 8 deletions packages/plugin-multi-tenant/src/fields/tenantsArrayField/index.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,37 @@
import type { ArrayField, RelationshipField } from 'payload'

export const tenantsArrayField = (args: {
import { defaults } from '../../defaults.js'

type Args = {
arrayFieldAccess?: ArrayField['access']
rowFields?: ArrayField['fields']
tenantFieldAccess?: RelationshipField['access']
tenantsArrayFieldName: ArrayField['name']
tenantsArrayTenantFieldName: RelationshipField['name']
tenantsCollectionSlug: string
}): ArrayField => ({
name: args.tenantsArrayFieldName,
}
export const tenantsArrayField = ({
arrayFieldAccess,
rowFields,
tenantFieldAccess,
tenantsArrayFieldName = defaults.tenantsArrayFieldName,
tenantsArrayTenantFieldName = defaults.tenantsArrayFieldName,
tenantsCollectionSlug = defaults.tenantCollectionSlug,
}: Args): ArrayField => ({
name: tenantsArrayFieldName,
type: 'array',
access: args?.arrayFieldAccess,
access: arrayFieldAccess,
fields: [
{
name: args.tenantsArrayTenantFieldName,
name: tenantsArrayTenantFieldName,
type: 'relationship',
access: args.tenantFieldAccess,
access: tenantFieldAccess,
index: true,
relationTo: args.tenantsCollectionSlug,
relationTo: tenantsCollectionSlug,
required: true,
saveToJWT: true,
},
...(args?.rowFields || []),
...(rowFields || []),
],
saveToJWT: true,
})
8 changes: 1 addition & 7 deletions packages/plugin-multi-tenant/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,14 @@ import type { CollectionConfig, Config } from 'payload'

import type { MultiTenantPluginConfig } from './types.js'

import { defaults } from './defaults.js'
import { tenantField } from './fields/tenantField/index.js'
import { tenantsArrayField } from './fields/tenantsArrayField/index.js'
import { addTenantCleanup } from './hooks/afterTenantDelete.js'
import { addCollectionAccess } from './utilities/addCollectionAccess.js'
import { addFilterOptionsToFields } from './utilities/addFilterOptionsToFields.js'
import { withTenantListFilter } from './utilities/withTenantListFilter.js'

const defaults = {
tenantCollectionSlug: 'tenants',
tenantFieldName: 'tenant',
tenantsArrayFieldName: 'tenants',
tenantsArrayTenantFieldName: 'tenant',
}

export const multiTenantPlugin =
<ConfigType>(pluginConfig: MultiTenantPluginConfig<ConfigType>) =>
(incomingConfig: Config): Config => {
Expand Down

0 comments on commit ec593b4

Please sign in to comment.