Skip to content

Commit

Permalink
Merge pull request #109 from csse-uoft/client-outcomes
Browse files Browse the repository at this point in the history
client outcome occurrences
Along with partner network push functionality
Let the recipient of a referral update its status
Add notification functionality
Add functionality to send and receive appointments
Make shareabilities and referral and appointment statuses be select fields instead of text fields
  • Loading branch information
LesterLyu authored Mar 5, 2024
2 parents ec0caa9 + 94de387 commit 70721d7
Show file tree
Hide file tree
Showing 77 changed files with 2,286 additions and 409 deletions.
24 changes: 24 additions & 0 deletions backend/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Mail server
MAIL_SENDER="[email protected]"
MAIL_SERVER="mail.example.com"
MAIL_PORT="465"
MAIL_USERNAME="[email protected]"
MAIL_PASSWORD="password"

# Custom GraphDB
GRAPHDB_ADDRESS="http://127.0.0.1:7200"
GRAPHDB_USERNAME="username"
GRAPHDB_PASSWORD="password"

# Custom MongoDB connection string
MONGODB_ADDRESS="mongodb://127.0.0.1:27017/snmi"

# Only in the testing env, make it accept self signed certificate
# For partner network testing
NODE_TLS_REJECT_UNAUTHORIZED=0

# Change it if you have the frontend somewhere else (CORS + Email Link)
FRONTEND_ADDRESS="http://127.0.0.1:3000"

# Backend Port
PORT=5001
4 changes: 3 additions & 1 deletion backend/config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ if (process.env.GRAPHDB_PASSWORD)
if (process.env.MONGODB_ADDRESS)
config.mongodb.addr = process.env.MONGODB_ADDRESS;

if (process.env.FRONTEND_ADDRESS)
if (process.env.FRONTEND_ADDRESS) {
config.frontend.addr = process.env.FRONTEND_ADDRESS;
config.allowedOrigins.push(process.env.FRONTEND_ADDRESS);
}

module.exports = config
40 changes: 40 additions & 0 deletions backend/helpers/location.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
function formatLocation(location, addressInfo) {
if (Object.keys(location).length === 1) {
return "Not Provided";
}

let format_location = '';
if (location.unitNumber) {
format_location += `${location.unitNumber}-`;
}
if (location.streetNumber) {
format_location += `${location.streetNumber} `;
}
if (location.streetName) {
format_location += `${location.streetName}`;
}
if (location.streetType && addressInfo?.streetTypes) {
format_location += ` ${addressInfo.streetTypes[location.streetType]}`;
}
if (location.streetDirection && addressInfo?.streetDirections) {
format_location += ` ${addressInfo.streetDirections[location.streetDirection]}`;
}
if (location.city) {
format_location += `, ${location.city}`;
}
if (location.state && addressInfo?.states) {
format_location += `, ${addressInfo.states[location.state]}`;
}
if (location.postalCode) {
format_location += ` ${location.postalCode}`;
}

if (format_location === '') {
if (location.lat && location.lng) {
format_location += `(${location.lat}, ${location.lng})`;
}
}
return format_location;
}

module.exports = {formatLocation}
9 changes: 9 additions & 0 deletions backend/helpers/sanitizer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* @param text: the string to sanitize
* @returns {string}
*/
const sanitize = text => {
return text.replace(/[^\w\., ()/-]/, '').trim();
}

module.exports = { sanitize }
14 changes: 13 additions & 1 deletion backend/loaders/express.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const cookieSession = require('cookie-session');
const cors = require('cors');

const {
baseRoute, registerRoute, userRoute, forgotPasswordRoute, usersRoute, clientsRoute,
baseRoute, registerRoute, userRoute, forgotPasswordRoute, usersRoute, notificationRoute, clientsRoute,
characteristicRoute, questionRoute, dynamicFormRoute, genericRoute, advancedSearchRoute, serviceProviderRoute,needRoute,
needSatisfierRoute, outcomeRoute, internalTypeRoute, serviceProvisionRoute, programProvisionRoute,
matchingRoute, partnerNetworkApiRoute, partnerNetworkPublicRoute, partnerOrganizationRoute
Expand All @@ -18,6 +18,7 @@ const config = require('../config');
const {initUserAccounts} = require('../services/userAccount/user');
const {initFieldTypes, initPredefinedCharacteristics, initPredefinedInternalType} = require('../services/characteristics');
const {initStreetTypes, initStreetDirections} = require('../services/address');
const {initOptions} = require('../services/options');

const app = express();

Expand Down Expand Up @@ -47,6 +48,7 @@ app.use('/api', authMiddleware('Authentication Required'));
// Private routes
app.use('/api', userRoute);
app.use('/api', usersRoute);
app.use('/api', notificationRoute);
app.use('/api', characteristicRoute);
app.use('/api', questionRoute);
app.use('/api', dynamicFormRoute);
Expand Down Expand Up @@ -76,6 +78,16 @@ app.use('/public', partnerNetworkPublicRoute);

await initStreetTypes();
await initStreetDirections();

await initOptions('Shareabilities',
["Shareable with partner organizations", "Shareable with all organizations", "Not shareable"],
'Shareability', 'shareability');
await initOptions('Referral Statuses',
["Requested", "Confirmed", "Cancelled", "Fulfilled"],
'ReferralStatus', 'referralStatus');
await initOptions('Appointment Statuses',
["Requested", "Confirmed", "Cancelled", "Fulfilled", "Client No Show", "Postponed"],
'AppointmentStatus', 'appointmentStatus');
})()


Expand Down
2 changes: 1 addition & 1 deletion backend/models/ClientFunctionalities/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const GDBClientModel = createGraphDBModel({
firstName: {type: String, internalKey: 'foaf:givenName'},
lastName: {type: String, internalKey: 'foaf:familyName'},
gender: {type: Types.NamedIndividual, internalKey: 'cp:hasGender'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':Client'], name: 'client'
});
Expand Down
6 changes: 5 additions & 1 deletion backend/models/appointment.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ const {GDBUserAccountModel} = require("./userAccount");
const {GDBPersonModel} = require("./person");
const {GDBCOModel} = require("./ClientFunctionalities/characteristicOccurrence");
const {GDBAddressModel} = require('./address');
const { GDBReferralModel } = require("./referral");

const GDBAppointmentModel = createGraphDBModel({
client: {type: GDBClientModel, internalKey: ':forClient'},
datetime: {type: Date, internalKey: ':hasDatetime'},
person: {type: GDBPersonModel, internalKey: ':hasPerson'},
user: {type: GDBUserAccountModel, internalKey: ':withUser'},
status: {type: String, internalKey: ':hasAppointmentStatus'},
referral: {type: GDBReferralModel, internalKey: ':hasReferral'},
characteristicOccurrences : {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'}
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
idInPartnerDeployment: {type: String, internalKey: ':hasIdInPartnerDeployment'},
}, {
rdfTypes: [':Appointment'], name: 'appointment'
});
Expand Down
2 changes: 1 addition & 1 deletion backend/models/clientAssessment.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const GDBClientAssessmentModel = createGraphDBModel({
outcomes: {type: [GDBOutcomeModel], internalKey: ':hasOutcome'},
outcomeOccurrences: {type: [GDBOutcomeOccurrenceModel], internalKey: ':hasOutcomeOccurrence'},
needOccurrences: {type: [GDBNeedOccurrenceModel], internalKey: ':hasNeedOccurrence'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
questions: {type: [GDBQuestionModel], internalKey: ':hasQuestion'},
}, {
rdfTypes: [':ClientAssessment'], name: 'clientAssessment'
Expand Down
4 changes: 2 additions & 2 deletions backend/models/need/need.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const {createGraphDBModel, Types} = require("graphdb-utils");
const {createGraphDBModel, Types, DeleteType} = require("graphdb-utils");
const {GDBNeedSatisfierModel} = require("../needSatisfier");
const {GDBCharacteristicModel} = require("../ClientFunctionalities/characteristic");
const {GDBAddressModel} = require('../address');
Expand All @@ -11,7 +11,7 @@ const GDBNeedModel = createGraphDBModel({
characteristic: {type: GDBCharacteristicModel, internalKey: ':forCharacteristic'},
codes: {type: [Types.NamedIndividual], internalKey: 'cids:hasCode'},
kindOf: {type: [() => GDBNeedModel], internalKey: ':kindOf'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':Need'], name: 'need'
});
Expand Down
4 changes: 2 additions & 2 deletions backend/models/need/needOccurrence.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const {createGraphDBModel, getGraphDBModel} = require("graphdb-utils");
const {createGraphDBModel, getGraphDBModel, DeleteType} = require("graphdb-utils");
const {GDBNeedModel} = require("./need");
const {GDBServiceModel} = require("../service/service");
const {GDBCOModel} = require("../ClientFunctionalities/characteristicOccurrence");
Expand All @@ -13,7 +13,7 @@ const GDBNeedOccurrenceModel = createGraphDBModel({
serviceMatches: {type: [GDBServiceModel], internalKey: ':hasServiceMatch'},
characteristicOccurrences: {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
client: {type: () => require("../ClientFunctionalities/client").GDBClientModel, internalKey: ':hasClient'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
// serviceRegistration: {type: GDBServiceRegistrationModel, internalKey: 'hasServiceRegistration'},
// serviceProvision: {type: GDBServiceProvisionModel, internalKey: 'hasServiceProvision'},
}, {
Expand Down
4 changes: 2 additions & 2 deletions backend/models/needSatisfierOccurrence.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
const {createGraphDBModel, Types} = require("graphdb-utils");
const {createGraphDBModel, Types, DeleteType} = require("graphdb-utils");
const {GDBNeedSatisfierModel} = require("./needSatisfier");
const {GDBAddressModel} = require("./address");
const {GDBCOModel} = require("./ClientFunctionalities/characteristicOccurrence");

const GDBNeedSatisfierOccurrenceModel = createGraphDBModel({
occurrenceOf: {type: GDBNeedSatisfierModel, internalKey: ':occurrenceOf'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
startDate: {type: Date, internalKey: ':hasStartDate'},
endDate: {type: Date, internalKey: ':hasEndDate'},
description: {type: String, internalKey: 'cids:hasDescription'},
Expand Down
14 changes: 14 additions & 0 deletions backend/models/notification.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const {createGraphDBModel} = require("graphdb-utils");

const GDBNotificationModel = createGraphDBModel({
name: {type: String, internalKey: ':hasName'},
description: {type: String, internalKey: 'cids:hasDescription'},
datetime: {type: Date, internalKey: ':hasDatetime'},
isRead: {type: Boolean, internalKey: ':isRead'}
}, {
rdfTypes: [':Notification'], name: 'notification'
});

module.exports = {
GDBNotificationModel
}
2 changes: 1 addition & 1 deletion backend/models/organization.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const {GDBQOModel} = require("./ClientFunctionalities/questionOccurrence");

const GDBOrganizationModel = createGraphDBModel({
name: {type: String, internalKey: 'tove_org:hasName'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
description: {type: String, internalKey: 'cids:hasDescription'},
characteristicOccurrences: {type: [GDBCOModel],
internalKey: ':hasCharacteristicOccurrence', onDelete: DeleteType.CASCADE},
Expand Down
4 changes: 2 additions & 2 deletions backend/models/outcome/outcome.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const {createGraphDBModel, Types} = require("graphdb-utils");
const {createGraphDBModel, Types, DeleteType} = require("graphdb-utils");
const {GDBCharacteristicModel} = require("../ClientFunctionalities/characteristic");
const {GDBAddressModel} = require('../address');

Expand All @@ -8,7 +8,7 @@ const GDBOutcomeModel = createGraphDBModel({
description: {type: String, internalKey: 'cids:hasDescription'},
characteristic: {type: GDBCharacteristicModel, internalKey: ':forCharacteristic'},
codes: {type: [Types.NamedIndividual], internalKey: 'cids:hasCode'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':Outcome'], name: 'outcome'
});
Expand Down
5 changes: 3 additions & 2 deletions backend/models/outcome/outcomeOccurrence.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
const {createGraphDBModel, getGraphDBModel} = require("graphdb-utils");
const {createGraphDBModel, getGraphDBModel, DeleteType} = require("graphdb-utils");
const {GDBOutcomeModel} = require("./outcome");
const {GDBServiceModel} = require("../service/service");
const {GDBCOModel} = require("../ClientFunctionalities/characteristicOccurrence");
const {GDBAddressModel} = require('../address');

const GDBOutcomeOccurrenceModel = createGraphDBModel({
occurrenceOf: {type: GDBOutcomeModel, internalKey: ':occurrenceOf'},
client: {type: () => require("../ClientFunctionalities/client").GDBClientModel, internalKey: ':hasClient'},
startDate: {type: Date, internalKey: ':hasStartDate'},
endDate: {type: Date, internalKey: ':hasEndDate'},
description: {type: String, internalKey: 'cids:hasDescription'},
serviceMatches: {type: [GDBServiceModel], internalKey: ':hasServiceMatch'},
characteristicOccurrences: {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':OutcomeOccurrence'], name: 'outcomeOccurrence'
});
Expand Down
4 changes: 2 additions & 2 deletions backend/models/program/program.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const GDBProgramModel = createGraphDBModel({
internalKey: ':hasCharacteristicOccurrence', onDelete: DeleteType.CASCADE},
serviceProvider: {type: GDBServiceProviderModel, internalKey: ':hasServiceProvider'},
manager: {type: GDBPersonModel, internalKey: ':hasManager'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
mode: {type: Types.NamedIndividual, internalKey: ':hasMode'},
needSatisfiers: {type: [GDBNeedSatisfierModel], internalKey: ':hasNeedSatisfier'},
startDate: {type: Date, internalKey: ':hasStartDate'},
Expand All @@ -24,7 +24,7 @@ const GDBProgramModel = createGraphDBModel({

shareability: {type: String, internalKey: ':hasShareability'},
partnerOrganizations: {type: [GDBOrganizationModel], internalKey: ':hasPartnerOrganization'},
idInPartnerDeployment: {type: Number, internalKey: ':hasIdInPartnerDeployment'},
idInPartnerDeployment: {type: String, internalKey: ':hasIdInPartnerDeployment'},
}, {
rdfTypes: [':Program'], name: 'program'
});
Expand Down
2 changes: 1 addition & 1 deletion backend/models/programProvision.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const GDBProgramProvisionModel = createGraphDBModel({
needSatisfierOccurrence: {type: GDBNeedSatisfierOccurrenceModel, internalKey: ':hasNeedSatisfierOccurrence'},
characteristicOccurrences : {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
client: {type: GDBClientModel, internalKey: ':hasClient'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':ProgramProvision'], name: 'programProvision'
});
Expand Down
2 changes: 1 addition & 1 deletion backend/models/programRegistration.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const GDBProgramRegistrationModel = createGraphDBModel({
referral: {type: GDBReferralModel, internalKey: ':hasReferral'},
appointment: {type: GDBAppointmentModel, internalKey: ':hasAppointment'},
characteristicOccurrences: {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':ProgramRegistration'], name: 'programRegistration'
});
Expand Down
6 changes: 3 additions & 3 deletions backend/models/referral.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const {GDBAddressModel} = require('./address');

const GDBReferralModel = createGraphDBModel({
referralType: {type: String, internalKey: ':hasType'},
referralStatus: {type: String, internalKey: ':hasStatus'},
referralStatus: {type: String, internalKey: ':hasReferralStatus'},
client: {type: GDBClientModel, internalKey: ':hasClient'},
date: {type: Date, internalKey: ':hasDate'},
referringServiceProvider: {type: GDBServiceProviderModel, internalKey: ':hasReferringServiceProvider'},
Expand All @@ -24,8 +24,8 @@ const GDBReferralModel = createGraphDBModel({
program: {type: GDBProgramModel, internalKey: ':forProgram'},
programOccurrence: {type: GDBProgramOccurrenceModel, internalKey: ':hasProgramOccurrence'},
characteristicOccurrences: {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
idInPartnerDeployment: {type: Number, internalKey: ':hasIdInPartnerDeployment'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
idInPartnerDeployment: {type: String, internalKey: ':hasIdInPartnerDeployment'},
}, {
rdfTypes: [':Referral'], name: 'referral'
});
Expand Down
4 changes: 2 additions & 2 deletions backend/models/service/service.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ const GDBServiceModel = createGraphDBModel({
internalKey: ':hasCharacteristicOccurrence', onDelete: DeleteType.CASCADE},
serviceProvider: {type: GDBServiceProviderModel, internalKey: ':hasServiceProvider'},
eligibilityCondition: {type: String, internalKey: ':hasEligibilityCondition'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
mode: {type: Types.NamedIndividual, internalKey: ':hasMode'},
needSatisfiers: {type: [GDBNeedSatisfierModel], internalKey: ':hasNeedSatisfier'},
program: {type: GDBProgramModel, internalKey: ':hasProgram'},
eligibility: {type: GDBEligibilityModel, internalKey: ':hasEligibility', onDelete: DeleteType.CASCADE},

shareability: {type: String, internalKey: ':hasShareability'},
partnerOrganizations: {type: [GDBOrganizationModel], internalKey: ':hasPartnerOrganization'},
idInPartnerDeployment: {type: Number, internalKey: ':hasIdInPartnerDeployment'},
idInPartnerDeployment: {type: String, internalKey: ':hasIdInPartnerDeployment'},
}, {
rdfTypes: [':Service'], name: 'service'
});
Expand Down
2 changes: 1 addition & 1 deletion backend/models/serviceProvision.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const GDBServiceProvisionModel = createGraphDBModel({
needSatisfierOccurrence: {type: GDBNeedSatisfierOccurrenceModel, internalKey: ':hasNeedSatisfierOccurrence'},
characteristicOccurrences : {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
client: {type: GDBClientModel, internalKey: ':hasClient'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':ServiceProvision'], name: 'serviceProvision'
});
Expand Down
2 changes: 1 addition & 1 deletion backend/models/serviceRegistration.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const GDBServiceRegistrationModel = createGraphDBModel({
referral: {type: GDBReferralModel, internalKey: ':hasReferral'},
appointment: {type: GDBAppointmentModel, internalKey: ':hasAppointment'},
characteristicOccurrences: {type: [GDBCOModel], internalKey: ':hasCharacteristicOccurrence'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
}, {
rdfTypes: [':ServiceRegistration'], name: 'serviceRegistration'
});
Expand Down
4 changes: 2 additions & 2 deletions backend/models/volunteer.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ const GDBVolunteerModel = createGraphDBModel({
firstName: {type: String, internalKey: 'foaf:givenName'},
lastName: {type: String, internalKey: 'foaf:familyName'},
gender: {type: Types.NamedIndividual, internalKey: 'cp:hasGender'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress'},
address: {type: GDBAddressModel, internalKey: 'ic:hasAddress', onDelete: DeleteType.CASCADE},
characteristicOccurrences: {type: [GDBCOModel],
internalKey: ':hasCharacteristicOccurrence', onDelete: DeleteType.CASCADE},
questionOccurrences: {type: [GDBQOModel],
internalKey: ':hasQuestionOccurrence', onDelete: DeleteType.CASCADE},
organization: {type: GDBOrganizationModel, internalKey: ':hasOrganization'},
shareability: {type: String, internalKey: ':hasShareability'},
partnerOrganizations: {type: [GDBOrganizationModel], internalKey: ':hasPartnerOrganization'},
idInPartnerDeployment: {type: Number, internalKey: ':hasIdInPartnerDeployment'},
idInPartnerDeployment: {type: String, internalKey: ':hasIdInPartnerDeployment'},
}, {
rdfTypes: [':Volunteer'], name: 'volunteer'
});
Expand Down
1 change: 1 addition & 0 deletions backend/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ module.exports = {
partnerNetworkApiRoute: require('./partnerNetworkApi'),
partnerNetworkPublicRoute: require('./partnerNetworkPublic'),
partnerOrganizationRoute: require('./partnerOrganization'),
notificationRoute: require('./notification'),
}
Loading

0 comments on commit 70721d7

Please sign in to comment.