package com.example;
import org.rapidoid.annotation.Valid;
import org.rapidoid.jpa.JPA;
import org.rapidoid.log.Log;
import org.rapidoid.security.Auth;
import org.rapidoid.setup.App;
import org.rapidoid.setup.My;
import org.rapidoid.setup.On;
import org.rapidoid.u.U;
public class Main {
public static void main(String[] args) {
Log.info("Starting application");
App.bootstrap(args).jpa().auth(); // bootstrap controllers, JPA and Auth
On.get("/books").json(() -> JPA.of(Book.class).all()); // get all books
On.post("/books").json((@Valid Book b) -> JPA.save(b)); // insert new book
On.put("/books/{id}").json((Long id, @Valid Book b) -> JPA.update(b)); // update (replace) book
On.delete("/books/{id}").json((Long id) -> { // delete book
JPA.delete(Book.class, id);
return true;
});
// Dummy login: successful if the username is the same as the password, or a proper password is entered
My.loginProvider((req, username, password) -> username.equals(password) || Auth.login(username, password));
// Gives the 'manager' role to every logged-in user except 'admin'
My.rolesProvider((req, username) -> U.eq(username, "admin") ? Auth.getRolesFor(username) : U.set("manager"));
}
}