Work on ad and social

This commit is contained in:
2025-08-07 12:33:27 +02:00
parent 789ab07afb
commit b6d18c2681
25 changed files with 27839 additions and 25 deletions

View File

@@ -0,0 +1,63 @@
{
"kind": "collectionType",
"collectionName": "ads",
"info": {
"singularName": "ad",
"pluralName": "ads",
"displayName": "Ad",
"description": ""
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"title": {
"type": "string"
},
"category": {
"type": "enumeration",
"enum": [
"hire",
"equipment",
"management",
"sheetmusic",
"local"
]
},
"description": {
"type": "text"
},
"validUntil": {
"type": "date"
},
"author": {
"type": "relation",
"relation": "oneToOne",
"target": "plugin::users-permissions.user"
},
"views": {
"type": "integer"
},
"applies": {
"type": "integer"
},
"location": {
"type": "component",
"repeatable": false,
"component": "address.full-address"
},
"contactname": {
"type": "string"
},
"contactemail": {
"type": "string"
},
"contactphone": {
"type": "string"
},
"featured": {
"type": "boolean"
}
}
}

View File

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

7
src/api/ad/routes/ad.ts Normal file
View File

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

View File

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

View File

@@ -0,0 +1,34 @@
{
"kind": "collectionType",
"collectionName": "comments",
"info": {
"singularName": "comment",
"pluralName": "comments",
"displayName": "Comment",
"description": ""
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"content": {
"type": "string"
},
"likes": {
"type": "relation",
"relation": "oneToMany",
"target": "plugin::users-permissions.user"
},
"owner": {
"type": "relation",
"relation": "oneToOne",
"target": "plugin::users-permissions.user"
},
"replies": {
"type": "relation",
"relation": "oneToMany",
"target": "api::comment.comment"
}
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,43 @@
{
"kind": "collectionType",
"collectionName": "groups",
"info": {
"singularName": "group",
"pluralName": "groups",
"displayName": "Group"
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"title": {
"type": "string"
},
"description": {
"type": "text"
},
"banner": {
"allowedTypes": [
"images",
"files",
"videos",
"audios"
],
"type": "media",
"multiple": false
},
"users": {
"type": "relation",
"relation": "manyToMany",
"target": "plugin::users-permissions.user",
"inversedBy": "groups"
},
"owner": {
"type": "relation",
"relation": "manyToOne",
"target": "plugin::users-permissions.user",
"inversedBy": "groups"
}
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,57 @@
{
"kind": "collectionType",
"collectionName": "posts",
"info": {
"singularName": "post",
"pluralName": "posts",
"displayName": "Post",
"description": ""
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"content": {
"type": "text"
},
"media": {
"type": "media",
"multiple": true,
"required": false,
"allowedTypes": [
"images",
"files",
"videos",
"audios"
]
},
"author": {
"type": "relation",
"relation": "manyToOne",
"target": "plugin::users-permissions.user",
"inversedBy": "posts"
},
"likes": {
"type": "relation",
"relation": "oneToMany",
"target": "plugin::users-permissions.user"
},
"category": {
"type": "enumeration",
"enum": [
"photo",
"video",
"event"
]
},
"comments": {
"type": "relation",
"relation": "oneToMany",
"target": "api::comment.comment"
},
"shares": {
"type": "integer"
}
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,34 @@
{
"kind": "collectionType",
"collectionName": "reports",
"info": {
"singularName": "report",
"pluralName": "reports",
"displayName": "report",
"description": ""
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"details": {
"type": "text"
},
"reason": {
"type": "enumeration",
"enum": [
"inappropriate",
"fraudulent",
"duplicate",
"expired",
"other"
]
},
"reporter": {
"type": "relation",
"relation": "oneToOne",
"target": "plugin::users-permissions.user"
}
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,35 @@
{
"collectionName": "components_address_full_addresses",
"info": {
"displayName": "FullAddress",
"icon": "pinMap",
"description": ""
},
"options": {},
"attributes": {
"freeaddress": {
"type": "string"
},
"housenumber": {
"type": "string"
},
"road": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"postcode": {
"type": "string"
},
"long": {
"type": "decimal"
},
"lat": {
"type": "decimal"
}
}
}

View File

@@ -181,6 +181,23 @@
"relation": "oneToMany", "relation": "oneToMany",
"target": "api::announcement.announcement", "target": "api::announcement.announcement",
"mappedBy": "author" "mappedBy": "author"
},
"posts": {
"type": "relation",
"relation": "oneToMany",
"target": "api::post.post",
"mappedBy": "author"
},
"groups": {
"type": "relation",
"relation": "oneToMany",
"target": "api::group.group",
"mappedBy": "owner"
},
"friends": {
"type": "relation",
"relation": "oneToMany",
"target": "plugin::users-permissions.user"
} }
} }
} }

View File

@@ -1,5 +1,24 @@
import type { Schema, Struct } from '@strapi/strapi'; import type { Schema, Struct } from '@strapi/strapi';
export interface AddressFullAddress extends Struct.ComponentSchema {
collectionName: 'components_address_full_addresses';
info: {
description: '';
displayName: 'FullAddress';
icon: 'pinMap';
};
attributes: {
city: Schema.Attribute.String;
country: Schema.Attribute.String;
freeaddress: Schema.Attribute.String;
housenumber: Schema.Attribute.String;
lat: Schema.Attribute.Decimal;
long: Schema.Attribute.Decimal;
postcode: Schema.Attribute.String;
road: Schema.Attribute.String;
};
}
export interface UserPermissions extends Struct.ComponentSchema { export interface UserPermissions extends Struct.ComponentSchema {
collectionName: 'components_user_permissions'; collectionName: 'components_user_permissions';
info: { info: {
@@ -19,6 +38,7 @@ export interface UserPermissions extends Struct.ComponentSchema {
declare module '@strapi/strapi' { declare module '@strapi/strapi' {
export module Public { export module Public {
export interface ComponentSchemas { export interface ComponentSchemas {
'address.full-address': AddressFullAddress;
'user.permissions': UserPermissions; 'user.permissions': UserPermissions;
} }
} }

View File

@@ -369,6 +369,48 @@ export interface AdminUser extends Struct.CollectionTypeSchema {
}; };
} }
export interface ApiAdAd extends Struct.CollectionTypeSchema {
collectionName: 'ads';
info: {
description: '';
displayName: 'Ad';
pluralName: 'ads';
singularName: 'ad';
};
options: {
draftAndPublish: false;
};
attributes: {
applies: Schema.Attribute.Integer;
author: Schema.Attribute.Relation<
'oneToOne',
'plugin::users-permissions.user'
>;
category: Schema.Attribute.Enumeration<
['hire', 'equipment', 'management', 'sheetmusic', 'local']
>;
contactemail: Schema.Attribute.String;
contactname: Schema.Attribute.String;
contactphone: Schema.Attribute.String;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
description: Schema.Attribute.Text;
featured: Schema.Attribute.Boolean;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<'oneToMany', 'api::ad.ad'> &
Schema.Attribute.Private;
location: Schema.Attribute.Component<'address.full-address', false>;
publishedAt: Schema.Attribute.DateTime;
title: Schema.Attribute.String;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
validUntil: Schema.Attribute.Date;
views: Schema.Attribute.Integer;
};
}
export interface ApiAnnouncementAnnouncement export interface ApiAnnouncementAnnouncement
extends Struct.CollectionTypeSchema { extends Struct.CollectionTypeSchema {
collectionName: 'announcements'; collectionName: 'announcements';
@@ -678,6 +720,44 @@ export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
}; };
} }
export interface ApiCommentComment extends Struct.CollectionTypeSchema {
collectionName: 'comments';
info: {
description: '';
displayName: 'Comment';
pluralName: 'comments';
singularName: 'comment';
};
options: {
draftAndPublish: false;
};
attributes: {
content: Schema.Attribute.String;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
likes: Schema.Attribute.Relation<
'oneToMany',
'plugin::users-permissions.user'
>;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<
'oneToMany',
'api::comment.comment'
> &
Schema.Attribute.Private;
owner: Schema.Attribute.Relation<
'oneToOne',
'plugin::users-permissions.user'
>;
publishedAt: Schema.Attribute.DateTime;
replies: Schema.Attribute.Relation<'oneToMany', 'api::comment.comment'>;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
};
}
export interface ApiConversationConversation export interface ApiConversationConversation
extends Struct.CollectionTypeSchema { extends Struct.CollectionTypeSchema {
collectionName: 'conversations'; collectionName: 'conversations';
@@ -835,6 +915,41 @@ export interface ApiEventEvent extends Struct.CollectionTypeSchema {
}; };
} }
export interface ApiGroupGroup extends Struct.CollectionTypeSchema {
collectionName: 'groups';
info: {
displayName: 'Group';
pluralName: 'groups';
singularName: 'group';
};
options: {
draftAndPublish: false;
};
attributes: {
banner: Schema.Attribute.Media<'images' | 'files' | 'videos' | 'audios'>;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
description: Schema.Attribute.Text;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<'oneToMany', 'api::group.group'> &
Schema.Attribute.Private;
owner: Schema.Attribute.Relation<
'manyToOne',
'plugin::users-permissions.user'
>;
publishedAt: Schema.Attribute.DateTime;
title: Schema.Attribute.String;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
users: Schema.Attribute.Relation<
'manyToMany',
'plugin::users-permissions.user'
>;
};
}
export interface ApiMessageMessage extends Struct.CollectionTypeSchema { export interface ApiMessageMessage extends Struct.CollectionTypeSchema {
collectionName: 'messages'; collectionName: 'messages';
info: { info: {
@@ -904,6 +1019,83 @@ export interface ApiPermissionsTemplatePermissionsTemplate
}; };
} }
export interface ApiPostPost extends Struct.CollectionTypeSchema {
collectionName: 'posts';
info: {
description: '';
displayName: 'Post';
pluralName: 'posts';
singularName: 'post';
};
options: {
draftAndPublish: false;
};
attributes: {
author: Schema.Attribute.Relation<
'manyToOne',
'plugin::users-permissions.user'
>;
category: Schema.Attribute.Enumeration<['photo', 'video', 'event']>;
comments: Schema.Attribute.Relation<'oneToMany', 'api::comment.comment'>;
content: Schema.Attribute.Text;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
likes: Schema.Attribute.Relation<
'oneToMany',
'plugin::users-permissions.user'
>;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<'oneToMany', 'api::post.post'> &
Schema.Attribute.Private;
media: Schema.Attribute.Media<
'images' | 'files' | 'videos' | 'audios',
true
>;
publishedAt: Schema.Attribute.DateTime;
shares: Schema.Attribute.Integer;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
};
}
export interface ApiReportReport extends Struct.CollectionTypeSchema {
collectionName: 'reports';
info: {
description: '';
displayName: 'report';
pluralName: 'reports';
singularName: 'report';
};
options: {
draftAndPublish: false;
};
attributes: {
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
details: Schema.Attribute.Text;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<
'oneToMany',
'api::report.report'
> &
Schema.Attribute.Private;
publishedAt: Schema.Attribute.DateTime;
reason: Schema.Attribute.Enumeration<
['inappropriate', 'fraudulent', 'duplicate', 'expired', 'other']
>;
reporter: Schema.Attribute.Relation<
'oneToOne',
'plugin::users-permissions.user'
>;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
};
}
export interface PluginContentReleasesRelease export interface PluginContentReleasesRelease
extends Struct.CollectionTypeSchema { extends Struct.CollectionTypeSchema {
collectionName: 'strapi_releases'; collectionName: 'strapi_releases';
@@ -1394,7 +1586,12 @@ export interface PluginUsersPermissionsUser
Schema.Attribute.SetMinMaxLength<{ Schema.Attribute.SetMinMaxLength<{
minLength: 6; minLength: 6;
}>; }>;
friends: Schema.Attribute.Relation<
'oneToMany',
'plugin::users-permissions.user'
>;
gender: Schema.Attribute.Enumeration<['men', 'women', 'none']>; gender: Schema.Attribute.Enumeration<['men', 'women', 'none']>;
groups: Schema.Attribute.Relation<'oneToMany', 'api::group.group'>;
job: Schema.Attribute.Enumeration< job: Schema.Attribute.Enumeration<
['choir_director', 'choir_addict', 'choir_master', 'choir_singer', 'none'] ['choir_director', 'choir_addict', 'choir_master', 'choir_singer', 'none']
>; >;
@@ -1414,6 +1611,7 @@ export interface PluginUsersPermissionsUser
Schema.Attribute.SetMinMaxLength<{ Schema.Attribute.SetMinMaxLength<{
minLength: 6; minLength: 6;
}>; }>;
posts: Schema.Attribute.Relation<'oneToMany', 'api::post.post'>;
provider: Schema.Attribute.String; provider: Schema.Attribute.String;
publishedAt: Schema.Attribute.DateTime; publishedAt: Schema.Attribute.DateTime;
resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private; resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private;
@@ -1447,6 +1645,7 @@ declare module '@strapi/strapi' {
'admin::transfer-token': AdminTransferToken; 'admin::transfer-token': AdminTransferToken;
'admin::transfer-token-permission': AdminTransferTokenPermission; 'admin::transfer-token-permission': AdminTransferTokenPermission;
'admin::user': AdminUser; 'admin::user': AdminUser;
'api::ad.ad': ApiAdAd;
'api::announcement.announcement': ApiAnnouncementAnnouncement; 'api::announcement.announcement': ApiAnnouncementAnnouncement;
'api::board-card.board-card': ApiBoardCardBoardCard; 'api::board-card.board-card': ApiBoardCardBoardCard;
'api::board-list.board-list': ApiBoardListBoardList; 'api::board-list.board-list': ApiBoardListBoardList;
@@ -1455,12 +1654,16 @@ declare module '@strapi/strapi' {
'api::choral-membership.choral-membership': ApiChoralMembershipChoralMembership; '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::comment.comment': ApiCommentComment;
'api::conversation.conversation': ApiConversationConversation; 'api::conversation.conversation': ApiConversationConversation;
'api::direct-message.direct-message': ApiDirectMessageDirectMessage; 'api::direct-message.direct-message': ApiDirectMessageDirectMessage;
'api::event-other.event-other': ApiEventOtherEventOther; 'api::event-other.event-other': ApiEventOtherEventOther;
'api::event.event': ApiEventEvent; 'api::event.event': ApiEventEvent;
'api::group.group': ApiGroupGroup;
'api::message.message': ApiMessageMessage; 'api::message.message': ApiMessageMessage;
'api::permissions-template.permissions-template': ApiPermissionsTemplatePermissionsTemplate; 'api::permissions-template.permissions-template': ApiPermissionsTemplatePermissionsTemplate;
'api::post.post': ApiPostPost;
'api::report.report': ApiReportReport;
'plugin::content-releases.release': PluginContentReleasesRelease; 'plugin::content-releases.release': PluginContentReleasesRelease;
'plugin::content-releases.release-action': PluginContentReleasesReleaseAction; 'plugin::content-releases.release-action': PluginContentReleasesReleaseAction;
'plugin::i18n.locale': PluginI18NLocale; 'plugin::i18n.locale': PluginI18NLocale;