Optimize database structure
parent
3495586a3b
commit
c7f137c48a
|
@ -1,9 +1,8 @@
|
|||
import {Injectable, Inject, Optional} from '@angular/core';
|
||||
import {User} from '../../models/model-interfaces';
|
||||
import {Http, URLSearchParams, RequestMethod, RequestOptions} from '@angular/http';
|
||||
import {Http} from '@angular/http';
|
||||
import {Observable} from 'rxjs/Observable';
|
||||
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
|
||||
import {LOAD, ADD, EDIT, REMOVE, UserStore} from '../stores/user.store';
|
||||
import {UserStore} from '../stores/user.store';
|
||||
import {SOCKET_IO, AUTH_ENABLED} from '../../app.tokens';
|
||||
|
||||
const BASE_URL = `http://localhost:3000/api/users`;
|
||||
|
@ -25,10 +24,6 @@ export class LoginService {
|
|||
@Inject(SOCKET_IO) socketIO) {
|
||||
this.users$ = userStore.items$;
|
||||
this.socket = socketIO(WEB_SOCKET_URL);
|
||||
Observable.fromEvent(this.socket, 'user_saved')
|
||||
.subscribe((action) => {
|
||||
this.userStore.dispatch(action);
|
||||
});
|
||||
}
|
||||
|
||||
getUser(name: string) : User[]{
|
||||
|
|
|
@ -1,39 +1,8 @@
|
|||
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
|
||||
import {User} from '../../models/model-interfaces';
|
||||
|
||||
export const LOAD = 'LOAD';
|
||||
export const ADD = 'ADD';
|
||||
export const EDIT = 'EDIT';
|
||||
export const REMOVE = 'REMOVE';
|
||||
|
||||
export class UserStore {
|
||||
private users: User[] = [];
|
||||
|
||||
items$ = new BehaviorSubject<User[]>([]);
|
||||
|
||||
dispatch(action) {
|
||||
console.log("dispatched")
|
||||
this.users = this._reduce(this.users, action);
|
||||
this.items$.next(this.users);
|
||||
}
|
||||
|
||||
_reduce(users: User[], action) {
|
||||
switch (action.type) {
|
||||
case LOAD:
|
||||
return [...action.data];
|
||||
case ADD:
|
||||
return [...users, action.data];
|
||||
case EDIT:
|
||||
return users.map(user => {
|
||||
const editedUser = action.data;
|
||||
if (user.id !== editedUser.id){
|
||||
return user;
|
||||
}
|
||||
return editedUser;
|
||||
});
|
||||
case REMOVE:
|
||||
return users.filter(user => user.id !== action.data.id);
|
||||
default:
|
||||
return users;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue