diff options
Diffstat (limited to 'services/votes')
| -rw-r--r-- | services/votes/votes.class.ts | 14 | ||||
| -rw-r--r-- | services/votes/votes.hooks.ts | 15 | ||||
| -rw-r--r-- | services/votes/votes.service.ts | 10 | 
3 files changed, 39 insertions, 0 deletions
| diff --git a/services/votes/votes.class.ts b/services/votes/votes.class.ts new file mode 100644 index 0000000..d95c148 --- /dev/null +++ b/services/votes/votes.class.ts @@ -0,0 +1,14 @@ +import PollModel from '../../models/polls/poll.model'; +import { PollSchema } from '../../models/polls/poll.schema'; + +export default class Votes { +  async create(data: any, params: any): Promise<PollSchema | null> { +    return PollModel.findById(params.route.id) +      .then(poll => poll?.vote(params.user._id, data.which)) +      .catch(e => { +        console.error(e); +        return null; +      }); +  } +} + diff --git a/services/votes/votes.hooks.ts b/services/votes/votes.hooks.ts new file mode 100644 index 0000000..2e29008 --- /dev/null +++ b/services/votes/votes.hooks.ts @@ -0,0 +1,15 @@ +import { +  convertPollHook +} from '../../hooks/convertPoll'; + +import { authenticate } from '@feathersjs/authentication'; + +export default { +  before: { +    create: [authenticate('jwt')] +  }, +  after: { +    all: [convertPollHook] +  } +}; + diff --git a/services/votes/votes.service.ts b/services/votes/votes.service.ts new file mode 100644 index 0000000..3947d9b --- /dev/null +++ b/services/votes/votes.service.ts @@ -0,0 +1,10 @@ +import { Application } from '@feathersjs/express'; +import Votes from './votes.class'; + +import hooks from './votes.hooks'; + +export default (app: Application): void => { +  app.use('/polls/:id/votes/', new Votes()); +  app.service('/polls/:id/votes/').hooks(hooks); +}; + | 
