Skip to content

Commit

Permalink
[add] Questionnaire model & Field compont
Browse files Browse the repository at this point in the history
  • Loading branch information
TechQuery committed Nov 27, 2023
1 parent 511357b commit 85f9bf2
Show file tree
Hide file tree
Showing 9 changed files with 174 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ohp/web-server",
"version": "0.6.0",
"version": "0.7.0",
"private": true,
"engines": {
"node": ">=18.0.0 <=20.x.x",
Expand Down
6 changes: 6 additions & 0 deletions src/api/activity/content-types/activity/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,12 @@
"relation": "oneToMany",
"target": "api::enrollment.enrollment",
"mappedBy": "activity"
},
"questionnaire": {
"type": "relation",
"relation": "oneToOne",
"target": "api::questionnaire.questionnaire",
"mappedBy": "activity"
}
}
}
37 changes: 37 additions & 0 deletions src/api/questionnaire/content-types/questionnaire/schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"kind": "collectionType",
"collectionName": "questionnaires",
"info": {
"singularName": "questionnaire",
"pluralName": "questionnaires",
"displayName": "Questionnaire"
},
"options": {
"draftAndPublish": true
},
"pluginOptions": {
"i18n": {
"localized": true
}
},
"attributes": {
"activity": {
"type": "relation",
"relation": "oneToOne",
"target": "api::activity.activity",
"inversedBy": "questionnaire"
},
"extensions": {
"displayName": "Field",
"type": "component",
"repeatable": true,
"pluginOptions": {
"i18n": {
"localized": true
}
},
"component": "form.field",
"required": true
}
}
}
9 changes: 9 additions & 0 deletions src/api/questionnaire/controllers/questionnaire.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* questionnaire controller
*/

import { factories } from '@strapi/strapi';

export default factories.createCoreController(
'api::questionnaire.questionnaire',
);
7 changes: 7 additions & 0 deletions src/api/questionnaire/routes/questionnaire.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/**
* questionnaire router
*/

import { factories } from '@strapi/strapi';

export default factories.createCoreRouter('api::questionnaire.questionnaire');
7 changes: 7 additions & 0 deletions src/api/questionnaire/services/questionnaire.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/**
* questionnaire service
*/

import { factories } from '@strapi/strapi';

export default factories.createCoreService('api::questionnaire.questionnaire');
32 changes: 32 additions & 0 deletions src/components/form/field.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"collectionName": "components_form_fields",
"info": {
"displayName": "Field",
"icon": "italic"
},
"options": {},
"attributes": {
"title": {
"type": "string",
"required": true
},
"type": {
"type": "enumeration",
"enum": ["text", "tel", "email", "url"],
"default": "text"
},
"options": {
"type": "component",
"repeatable": true,
"component": "common.multiple-text"
},
"multiple": {
"type": "boolean",
"default": false
},
"required": {
"type": "boolean",
"default": false
}
}
}
17 changes: 17 additions & 0 deletions types/generated/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,27 @@ export interface CommonMultipleText extends Schema.Component {
};
}

export interface FormField extends Schema.Component {
collectionName: 'components_form_fields';
info: {
displayName: 'Field';
icon: 'italic';
};
attributes: {
title: Attribute.String & Attribute.Required;
type: Attribute.Enumeration<['text', 'tel', 'email', 'url']> &
Attribute.DefaultTo<'text'>;
options: Attribute.Component<'common.multiple-text', true>;
multiple: Attribute.Boolean & Attribute.DefaultTo<false>;
required: Attribute.Boolean & Attribute.DefaultTo<false>;
};
}

declare module '@strapi/types' {
export module Shared {
export interface Components {
'common.multiple-text': CommonMultipleText;
'form.field': FormField;
}
}
}
58 changes: 58 additions & 0 deletions types/generated/contentTypes.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,11 @@ export interface ApiActivityActivity extends Schema.CollectionType {
'oneToMany',
'api::enrollment.enrollment'
>;
questionnaire: Attribute.Relation<
'api::activity.activity',
'oneToOne',
'api::questionnaire.questionnaire'
>;
createdAt: Attribute.DateTime;
updatedAt: Attribute.DateTime;
publishedAt: Attribute.DateTime;
Expand Down Expand Up @@ -579,6 +584,58 @@ export interface ApiEnrollmentEnrollment extends Schema.CollectionType {
};
}

export interface ApiQuestionnaireQuestionnaire extends Schema.CollectionType {
collectionName: 'questionnaires';
info: {
singularName: 'questionnaire';
pluralName: 'questionnaires';
displayName: 'Questionnaire';
};
options: {
draftAndPublish: true;
};
pluginOptions: {
i18n: {
localized: true;
};
};
attributes: {
activity: Attribute.Relation<
'api::questionnaire.questionnaire',
'oneToOne',
'api::activity.activity'
>;
extensions: Attribute.Component<'form.field', true> &
Attribute.Required &
Attribute.SetPluginOptions<{
i18n: {
localized: true;
};
}>;
createdAt: Attribute.DateTime;
updatedAt: Attribute.DateTime;
publishedAt: Attribute.DateTime;
createdBy: Attribute.Relation<
'api::questionnaire.questionnaire',
'oneToOne',
'admin::user'
> &
Attribute.Private;
updatedBy: Attribute.Relation<
'api::questionnaire.questionnaire',
'oneToOne',
'admin::user'
> &
Attribute.Private;
localizations: Attribute.Relation<
'api::questionnaire.questionnaire',
'oneToMany',
'api::questionnaire.questionnaire'
>;
locale: Attribute.String;
};
}

export interface PluginUploadFile extends Schema.CollectionType {
collectionName: 'files';
info: {
Expand Down Expand Up @@ -956,6 +1013,7 @@ declare module '@strapi/types' {
'admin::transfer-token-permission': AdminTransferTokenPermission;
'api::activity.activity': ApiActivityActivity;
'api::enrollment.enrollment': ApiEnrollmentEnrollment;
'api::questionnaire.questionnaire': ApiQuestionnaireQuestionnaire;
'plugin::upload.file': PluginUploadFile;
'plugin::upload.folder': PluginUploadFolder;
'plugin::react-icons.iconlibrary': PluginReactIconsIconlibrary;
Expand Down

0 comments on commit 85f9bf2

Please sign in to comment.