Wire in delete and modify to front end (unimplemented)

This commit is contained in:
William Brown 2019-02-05 12:38:04 +10:00
parent c090021fdf
commit f22562a0ba
4 changed files with 62 additions and 3 deletions

View file

@ -11,10 +11,10 @@ use futures::{future, Future, Stream};
use super::config::Configuration;
// SearchResult
use super::event::{CreateEvent, SearchEvent, AuthEvent};
use super::event::{DeleteEvent, ModifyEvent, CreateEvent, SearchEvent, AuthEvent};
use super::filter::Filter;
use super::log;
use super::proto_v1::{CreateRequest, SearchRequest, AuthRequest, AuthResponse};
use super::proto_v1::{DeleteRequest, ModifyRequest, CreateRequest, SearchRequest, AuthRequest, AuthResponse};
use super::server;
struct AppState {
@ -91,6 +91,18 @@ fn create(
json_event_decode!(req, state, CreateEvent, Response, CreateRequest)
}
fn modify(
(req, state): (HttpRequest<AppState>, State<AppState>),
) -> impl Future<Item = HttpResponse, Error = Error> {
json_event_decode!(req, state, ModifyEvent, Response, ModifyRequest)
}
fn delete(
(req, state): (HttpRequest<AppState>, State<AppState>),
) -> impl Future<Item = HttpResponse, Error = Error> {
json_event_decode!(req, state, DeleteEvent, Response, DeleteRequest)
}
fn search(
(req, state): (HttpRequest<AppState>, State<AppState>),
) -> impl Future<Item = HttpResponse, Error = Error> {
@ -241,6 +253,13 @@ pub fn create_server_core(config: Configuration) {
.resource("/v1/create", |r| {
r.method(http::Method::POST).with_async(create)
})
// Should these actually be different method types?
.resource("/v1/modify", |r| {
r.method(http::Method::POST).with_async(modify)
})
.resource("/v1/delete", |r| {
r.method(http::Method::POST).with_async(delete)
})
// curl --header "Content-Type: application/json" --request POST --data '{ "filter" : { "Eq": ["class", "user"] }}' http://127.0.0.1:8080/v1/search
.resource("/v1/search", |r| {
r.method(http::Method::POST).with_async(search)

View file

@ -1,6 +1,6 @@
use super::filter::Filter;
use super::proto_v1::Entry as ProtoEntry;
use super::proto_v1::{CreateRequest, Response, SearchRequest, SearchResponse, AuthRequest, AuthResponse, AuthStatus};
use super::proto_v1::{CreateRequest, Response, SearchRequest, SearchResponse, AuthRequest, AuthResponse, AuthStatus, DeleteRequest, ModifyRequest};
use actix::prelude::*;
use entry::{Entry, EntryCommitted, EntryInvalid, EntryNew, EntryValid};
use error::OperationError;
@ -157,6 +157,10 @@ impl Message for DeleteEvent {
}
impl DeleteEvent {
pub fn from_request(request: DeleteRequest) -> Self {
unimplemented!()
}
pub fn new_internal(filter: Filter) -> Self {
DeleteEvent {
filter: filter,
@ -177,6 +181,10 @@ impl Message for ModifyEvent {
}
impl ModifyEvent {
pub fn from_request(request: ModifyRequest) -> Self {
unimplemented!()
}
pub fn new_internal(filter: Filter, modlist: ModifyList) -> Self {
ModifyEvent {
filter: filter,

View file

@ -63,6 +63,22 @@ impl CreateRequest {
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DeleteRequest {
pub filter: Filter,
}
impl DeleteRequest {
pub fn new(filter: Filter) -> Self {
DeleteRequest { filter: filter }
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ModifyRequest {
// Probably needs a modlist?
}
// Login is a multi-step process potentially. First the client says who they
// want to request
//

View file

@ -696,6 +696,22 @@ impl Handler<CreateEvent> for QueryServer {
}
}
impl Handler<ModifyEvent> for QueryServer {
type Result = Result<OpResult, OperationError>;
fn handle(&mut self, msg: ModifyEvent, _: &mut Self::Context) -> Self::Result {
unimplemented!()
}
}
impl Handler<DeleteEvent> for QueryServer {
type Result = Result<OpResult, OperationError>;
fn handle(&mut self, msg: DeleteEvent, _: &mut Self::Context) -> Self::Result {
unimplemented!()
}
}
impl Handler<AuthEvent> for QueryServer {
type Result = Result<AuthResult, OperationError>;