Add choral-membership

This commit is contained in:
2025-04-18 12:08:31 +02:00
parent 3cb23ef4b7
commit d524e765ce
9 changed files with 126 additions and 9 deletions

View File

@@ -0,0 +1,41 @@
{
"kind": "collectionType",
"collectionName": "choral_memberships",
"info": {
"singularName": "choral-membership",
"pluralName": "choral-memberships",
"displayName": "ChoralMembership",
"description": ""
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"user": {
"type": "relation",
"relation": "manyToOne",
"target": "plugin::users-permissions.user",
"inversedBy": "choral_memberships"
},
"choral": {
"type": "relation",
"relation": "manyToOne",
"target": "api::choral.choral",
"inversedBy": "memberships"
},
"role": {
"type": "enumeration",
"enum": [
"member",
"admin",
"owner"
]
},
"permissions": {
"type": "component",
"repeatable": true,
"component": "user.permissions"
}
}
}

View File

@@ -0,0 +1,7 @@
/**
* choral-membership controller
*/
import { factories } from '@strapi/strapi'
export default factories.createCoreController('api::choral-membership.choral-membership');

View File

@@ -0,0 +1,7 @@
/**
* choral-membership router
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('api::choral-membership.choral-membership');

View File

@@ -0,0 +1,7 @@
/**
* choral-membership service
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreService('api::choral-membership.choral-membership');

View File

@@ -82,6 +82,12 @@
}, },
"website": { "website": {
"type": "string" "type": "string"
},
"memberships": {
"type": "relation",
"relation": "oneToMany",
"target": "api::choral-membership.choral-membership",
"mappedBy": "choral"
} }
} }
} }

View File

@@ -2,7 +2,8 @@
"collectionName": "components_user_permissions", "collectionName": "components_user_permissions",
"info": { "info": {
"displayName": "permissions", "displayName": "permissions",
"icon": "key" "icon": "key",
"description": ""
}, },
"options": {}, "options": {},
"attributes": { "attributes": {
@@ -16,13 +17,10 @@
"users" "users"
] ]
}, },
"active": { "canRead": {
"type": "boolean" "type": "boolean"
}, },
"read": { "canWrite": {
"type": "boolean"
},
"write": {
"type": "boolean" "type": "boolean"
} }
} }

View File

@@ -169,6 +169,12 @@
"relation": "oneToMany", "relation": "oneToMany",
"target": "api::choral-permission.choral-permission", "target": "api::choral-permission.choral-permission",
"mappedBy": "user" "mappedBy": "user"
},
"choral_memberships": {
"type": "relation",
"relation": "oneToMany",
"target": "api::choral-membership.choral-membership",
"mappedBy": "user"
} }
} }
} }

View File

@@ -3,16 +3,16 @@ import type { Schema, Struct } from '@strapi/strapi';
export interface UserPermissions extends Struct.ComponentSchema { export interface UserPermissions extends Struct.ComponentSchema {
collectionName: 'components_user_permissions'; collectionName: 'components_user_permissions';
info: { info: {
description: '';
displayName: 'permissions'; displayName: 'permissions';
icon: 'key'; icon: 'key';
}; };
attributes: { attributes: {
active: Schema.Attribute.Boolean; canRead: Schema.Attribute.Boolean;
canWrite: Schema.Attribute.Boolean;
module: Schema.Attribute.Enumeration< module: Schema.Attribute.Enumeration<
['information', 'chat', 'board', 'calendar', 'users'] ['information', 'chat', 'board', 'calendar', 'users']
>; >;
read: Schema.Attribute.Boolean;
write: Schema.Attribute.Boolean;
}; };
} }

View File

@@ -475,6 +475,42 @@ export interface ApiBoardBoard extends Struct.CollectionTypeSchema {
}; };
} }
export interface ApiChoralMembershipChoralMembership
extends Struct.CollectionTypeSchema {
collectionName: 'choral_memberships';
info: {
description: '';
displayName: 'ChoralMembership';
pluralName: 'choral-memberships';
singularName: 'choral-membership';
};
options: {
draftAndPublish: false;
};
attributes: {
choral: Schema.Attribute.Relation<'manyToOne', 'api::choral.choral'>;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<
'oneToMany',
'api::choral-membership.choral-membership'
> &
Schema.Attribute.Private;
permissions: Schema.Attribute.Component<'user.permissions', true>;
publishedAt: Schema.Attribute.DateTime;
role: Schema.Attribute.Enumeration<['member', 'admin', 'owner']>;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
user: Schema.Attribute.Relation<
'manyToOne',
'plugin::users-permissions.user'
>;
};
}
export interface ApiChoralPermissionChoralPermission export interface ApiChoralPermissionChoralPermission
extends Struct.CollectionTypeSchema { extends Struct.CollectionTypeSchema {
collectionName: 'choral_permissions'; collectionName: 'choral_permissions';
@@ -543,6 +579,10 @@ export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
'api::choral.choral' 'api::choral.choral'
> & > &
Schema.Attribute.Private; Schema.Attribute.Private;
memberships: Schema.Attribute.Relation<
'oneToMany',
'api::choral-membership.choral-membership'
>;
name: Schema.Attribute.String; name: Schema.Attribute.String;
owner: Schema.Attribute.Relation< owner: Schema.Attribute.Relation<
'oneToOne', 'oneToOne',
@@ -1093,6 +1133,10 @@ export interface PluginUsersPermissionsUser
>; >;
blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo<false>; blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo<false>;
board: Schema.Attribute.Relation<'oneToOne', 'api::board.board'>; board: Schema.Attribute.Relation<'oneToOne', 'api::board.board'>;
choral_memberships: Schema.Attribute.Relation<
'oneToMany',
'api::choral-membership.choral-membership'
>;
choral_permissions: Schema.Attribute.Relation< choral_permissions: Schema.Attribute.Relation<
'oneToMany', 'oneToMany',
'api::choral-permission.choral-permission' 'api::choral-permission.choral-permission'
@@ -1167,6 +1211,7 @@ declare module '@strapi/strapi' {
'api::board-card.board-card': ApiBoardCardBoardCard; 'api::board-card.board-card': ApiBoardCardBoardCard;
'api::board-list.board-list': ApiBoardListBoardList; 'api::board-list.board-list': ApiBoardListBoardList;
'api::board.board': ApiBoardBoard; 'api::board.board': ApiBoardBoard;
'api::choral-membership.choral-membership': ApiChoralMembershipChoralMembership;
'api::choral-permission.choral-permission': ApiChoralPermissionChoralPermission; 'api::choral-permission.choral-permission': ApiChoralPermissionChoralPermission;
'api::choral.choral': ApiChoralChoral; 'api::choral.choral': ApiChoralChoral;
'api::event.event': ApiEventEvent; 'api::event.event': ApiEventEvent;