From 53c7ec8572d80c75828702b2a103269136785b4a Mon Sep 17 00:00:00 2001 From: eug-vs Date: Tue, 9 Jun 2020 13:48:11 +0300 Subject: refactor: change User interface --- UserService.ts | 16 +++++++--------- app.ts | 6 ++---- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/UserService.ts b/UserService.ts index 0cbb649..57a883c 100644 --- a/UserService.ts +++ b/UserService.ts @@ -1,10 +1,7 @@ interface User { - info : { - name: string; - age: number; - nationality: string; - sex: string; - } + name: string; + avatarUrl?: string; + age?: number; } export class UserService { @@ -14,9 +11,10 @@ export class UserService { return this.users; } - async create(data: Pick){ - const user: User = {...data}; + async create(data: Pick){ + const user: User = { ...data }; this.users.push(user); return user; } -} \ No newline at end of file +} + diff --git a/app.ts b/app.ts index 4a60eb8..5b0d9d6 100644 --- a/app.ts +++ b/app.ts @@ -46,10 +46,8 @@ app.service('polls').create({ }); app.service('users').create({ - info: { name: 'John Doe', age: 20, - nationality: 'Belarus', - sex: 'male' - } + avatarUrl: 'https://github.com/ilyayudovin.png' }); + -- cgit v1.2.3 From 24f0d8709fc5e90a92d9c3940e693f76cd653bf4 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Tue, 9 Jun 2020 13:49:51 +0300 Subject: refactor: move services to separate folder --- PollService.ts | 38 -------------------------------------- UserService.ts | 20 -------------------- services/PollService.ts | 38 ++++++++++++++++++++++++++++++++++++++ services/UserService.ts | 20 ++++++++++++++++++++ 4 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 PollService.ts delete mode 100644 UserService.ts create mode 100644 services/PollService.ts create mode 100644 services/UserService.ts diff --git a/PollService.ts b/PollService.ts deleted file mode 100644 index 2944af3..0000000 --- a/PollService.ts +++ /dev/null @@ -1,38 +0,0 @@ -interface ImageData { - url: string; - votes: number; -} - -interface User { - name: string; - avatarUrl: string; -} - -export interface Poll { - author: User; - contents: { - left: ImageData; - right: ImageData; - }; -} - -const defaultUser: User = { - name: 'John Doe', - avatarUrl: 'https://github.com/eug-vs.png' -}; - - -export class PollService { - polls: Poll[] = []; - - async find () { - return this.polls; - } - - async create (data: Pick) { - const poll: Poll = { ...data, author: defaultUser }; - this.polls.push(poll); - return poll; - } -} - diff --git a/UserService.ts b/UserService.ts deleted file mode 100644 index 57a883c..0000000 --- a/UserService.ts +++ /dev/null @@ -1,20 +0,0 @@ -interface User { - name: string; - avatarUrl?: string; - age?: number; -} - -export class UserService { - users: User[] = []; - - async find (){ - return this.users; - } - - async create(data: Pick){ - const user: User = { ...data }; - this.users.push(user); - return user; - } -} - diff --git a/services/PollService.ts b/services/PollService.ts new file mode 100644 index 0000000..2944af3 --- /dev/null +++ b/services/PollService.ts @@ -0,0 +1,38 @@ +interface ImageData { + url: string; + votes: number; +} + +interface User { + name: string; + avatarUrl: string; +} + +export interface Poll { + author: User; + contents: { + left: ImageData; + right: ImageData; + }; +} + +const defaultUser: User = { + name: 'John Doe', + avatarUrl: 'https://github.com/eug-vs.png' +}; + + +export class PollService { + polls: Poll[] = []; + + async find () { + return this.polls; + } + + async create (data: Pick) { + const poll: Poll = { ...data, author: defaultUser }; + this.polls.push(poll); + return poll; + } +} + diff --git a/services/UserService.ts b/services/UserService.ts new file mode 100644 index 0000000..57a883c --- /dev/null +++ b/services/UserService.ts @@ -0,0 +1,20 @@ +interface User { + name: string; + avatarUrl?: string; + age?: number; +} + +export class UserService { + users: User[] = []; + + async find (){ + return this.users; + } + + async create(data: Pick){ + const user: User = { ...data }; + this.users.push(user); + return user; + } +} + -- cgit v1.2.3 From e9d0438f6c02664c652a593c686564361fa0de6b Mon Sep 17 00:00:00 2001 From: eug-vs Date: Tue, 9 Jun 2020 14:16:15 +0300 Subject: refactor: structurize feathers app --- app.ts | 26 +++++++------------------- index.ts | 14 ++++++++++++++ services/PollService.ts | 38 -------------------------------------- services/UserService.ts | 20 -------------------- services/index.ts | 8 ++++++++ services/polls/polls.class.ts | 38 ++++++++++++++++++++++++++++++++++++++ services/polls/polls.service.ts | 7 +++++++ services/users/users.class.ts | 20 ++++++++++++++++++++ services/users/users.service.ts | 7 +++++++ 9 files changed, 101 insertions(+), 77 deletions(-) create mode 100644 index.ts delete mode 100644 services/PollService.ts delete mode 100644 services/UserService.ts create mode 100644 services/index.ts create mode 100644 services/polls/polls.class.ts create mode 100644 services/polls/polls.service.ts create mode 100644 services/users/users.class.ts create mode 100644 services/users/users.service.ts diff --git a/app.ts b/app.ts index 5b0d9d6..264b517 100644 --- a/app.ts +++ b/app.ts @@ -1,10 +1,10 @@ import feathers from '@feathersjs/feathers'; -import '@feathersjs/transport-commons'; import express from '@feathersjs/express'; import socketio from '@feathersjs/socketio'; +import '@feathersjs/transport-commons'; + +import services from './services'; -import { PollService } from './PollService'; -import {UserService} from "./UserService"; const app = express(feathers()); @@ -14,24 +14,10 @@ app.use(express.static(__dirname)); app.configure(express.rest()); app.configure(socketio()); app.use(express.errorHandler()); +app.configure(services); -app.use('/polls', new PollService()); -app.use('/users', new UserService()); - -// Add any new real-time connection to the `everybody` channel -app.on('connection', connection => - app.channel('everybody').join(connection) -); -// Publish all events to the `everybody` channel -app.publish(data => app.channel('everybody')); - -app.listen(3030).on('listening', () => - console.log('Feathers server listening on localhost:3030') -); - -// For good measure let's create a message -// So our API doesn't look so empty +// Mock data app.service('polls').create({ contents: { left: { @@ -51,3 +37,5 @@ app.service('users').create({ avatarUrl: 'https://github.com/ilyayudovin.png' }); +export default app; + diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..35d1411 --- /dev/null +++ b/index.ts @@ -0,0 +1,14 @@ +import app from './app'; + +// Add any new real-time connection to the `everybody` channel +app.on('connection', connection => + app.channel('everybody').join(connection) +); +// Publish all events to the `everybody` channel +app.publish(data => app.channel('everybody')); + + +app.listen(3030).on('listening', () => + console.log('Feathers server listening on localhost:3030') +); + diff --git a/services/PollService.ts b/services/PollService.ts deleted file mode 100644 index 2944af3..0000000 --- a/services/PollService.ts +++ /dev/null @@ -1,38 +0,0 @@ -interface ImageData { - url: string; - votes: number; -} - -interface User { - name: string; - avatarUrl: string; -} - -export interface Poll { - author: User; - contents: { - left: ImageData; - right: ImageData; - }; -} - -const defaultUser: User = { - name: 'John Doe', - avatarUrl: 'https://github.com/eug-vs.png' -}; - - -export class PollService { - polls: Poll[] = []; - - async find () { - return this.polls; - } - - async create (data: Pick) { - const poll: Poll = { ...data, author: defaultUser }; - this.polls.push(poll); - return poll; - } -} - diff --git a/services/UserService.ts b/services/UserService.ts deleted file mode 100644 index 57a883c..0000000 --- a/services/UserService.ts +++ /dev/null @@ -1,20 +0,0 @@ -interface User { - name: string; - avatarUrl?: string; - age?: number; -} - -export class UserService { - users: User[] = []; - - async find (){ - return this.users; - } - - async create(data: Pick){ - const user: User = { ...data }; - this.users.push(user); - return user; - } -} - diff --git a/services/index.ts b/services/index.ts new file mode 100644 index 0000000..eeaf485 --- /dev/null +++ b/services/index.ts @@ -0,0 +1,8 @@ +import Users from './users/users.service'; +import Polls from './polls/polls.service'; + +export default (app: Application): void => { + app.configure(Users); + app.configure(Polls); +}; + diff --git a/services/polls/polls.class.ts b/services/polls/polls.class.ts new file mode 100644 index 0000000..82ef155 --- /dev/null +++ b/services/polls/polls.class.ts @@ -0,0 +1,38 @@ +interface ImageData { + url: string; + votes: number; +} + +interface User { + name: string; + avatarUrl: string; +} + +interface Poll { + author: User; + contents: { + left: ImageData; + right: ImageData; + }; +} + +const defaultUser: User = { + name: 'John Doe', + avatarUrl: 'https://github.com/eug-vs.png' +}; + + +export default class Polls { + polls: Poll[] = []; + + async find () { + return this.polls; + } + + async create (data: Pick) { + const poll: Poll = { ...data, author: defaultUser }; + this.polls.push(poll); + return poll; + } +} + diff --git a/services/polls/polls.service.ts b/services/polls/polls.service.ts new file mode 100644 index 0000000..a4bd816 --- /dev/null +++ b/services/polls/polls.service.ts @@ -0,0 +1,7 @@ +import { Application } from '@feathersjs/express'; +import Polls from './polls.class'; + +export default (app: Application): void => { + app.use('/polls', new Polls()); +}; + diff --git a/services/users/users.class.ts b/services/users/users.class.ts new file mode 100644 index 0000000..db6b5a9 --- /dev/null +++ b/services/users/users.class.ts @@ -0,0 +1,20 @@ +interface User { + name: string; + avatarUrl?: string; + age?: number; +} + +export default class Users { + users: User[] = []; + + async find (){ + return this.users; + } + + async create(data: Pick){ + const user: User = { ...data }; + this.users.push(user); + return user; + } +} + diff --git a/services/users/users.service.ts b/services/users/users.service.ts new file mode 100644 index 0000000..bf608fe --- /dev/null +++ b/services/users/users.service.ts @@ -0,0 +1,7 @@ +import { Application } from '@feathersjs/express'; +import Users from './users.class'; + +export default (app: Application): void => { + app.use('/users', new Users()); +}; + -- cgit v1.2.3