Skip to content

Instantly share code, notes, and snippets.

View juancho088's full-sized avatar

Juan Urrego juancho088

View GitHub Profile
@juancho088
juancho088 / CrudRepository.kt
Created February 17, 2019 18:12
CrudRepository Interface
interface CrudRepository<T, in ID> {
companion object {
const val LIMIT: Int = 50
const val MAX_LIMIT: Int = 100
const val OFFSET: Int = 0
const val MIN_LIMIT: Int = 0
}
fun save(entity: T): T
@juancho088
juancho088 / kotlinExposedDAOExample.kt
Created February 17, 2019 17:50
Kotlin Exposed DAO example
// CREATE
val movie = StarWarsFilm.new {
name = "The Last Jedi"
sequelId = 8
director = "Rian Johnson"
}
// READ
val movies = StarWarsFilm.all()
val movies = StarWarsFilm.find { StarWarsFilms.sequelId eq 8 }
@juancho088
juancho088 / dslKotlinExposedExample.kt
Created February 17, 2019 17:19
DSL Kotlin Exposed Example
// READ
val query: Query = StarWarsFilms.select { StarWarsFilms.sequelId eq 8 }
// INSERT
val id = StarWarsFilms.insertAndGetId {
it[name] = "The Last Jedi"
it[sequelId] = 8
it[director] = "Rian Johnson"
}
@juancho088
juancho088 / TestHandler.kt
Created August 6, 2018 18:07
File that tests if the main handler is routing and returning the correct payload
package com.myblockbuster
import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.whenever
import org.jetbrains.spek.api.Spek
import org.jetbrains.spek.api.dsl.given
import org.jetbrains.spek.api.dsl.it
import org.jetbrains.spek.api.dsl.on
import org.junit.Assert.assertEquals
import org.mockito.Mockito
@juancho088
juancho088 / MovieControllerWithServiceFactory.kt
Created June 11, 2018 15:20
MovieController using the service factory
package com.myblockbuster.movies.controllers
import com.myblockbuster.core.Request
import com.myblockbuster.core.User
import com.myblockbuster.core.controllers.Controller
import com.myblockbuster.core.factories.ServiceFactory
import com.myblockbuster.core.services.Service
import com.myblockbuster.movies.Movie
class MovieController: Controller<Movie> {
package com.myblockbuster.core.factories
import com.myblockbuster.core.User
import com.myblockbuster.core.services.Service
import com.myblockbuster.movies.Movie
import com.myblockbuster.movies.services.MovieService
/**
* Interface Factory
*/
@juancho088
juancho088 / MovieControllerWithOutFactory.kt
Created June 11, 2018 15:05
Movie Controller Without Factory
package com.myblockbuster.movies.controllers
import com.myblockbuster.core.Request
import com.myblockbuster.core.User
import com.myblockbuster.core.controllers.Controller
import com.myblockbuster.core.services.Service
import com.myblockbuster.movies.Movie
import com.myblockbuster.movies.services.MovieService
class MovieController: Controller<Movie> {
@juancho088
juancho088 / moviesModels.kt
Created June 11, 2018 14:47
Models for the Movie microservice
// File models.kt in the movies package (microservice)
package com.myblockbuster.movies
import com.myblockbuster.core.BaseModel
data class Person(var name: String, var surname: String) {
constructor() : this("", "")
}
data class Movie(var title: String, var rate: Double, var language: String, var director: Person,
@juancho088
juancho088 / moviesException.kt
Last active June 11, 2018 14:45
Movies exceptions
// File exceptions.kt in the movies package (microservice)
package com.myblockbuster.movies
import com.myblockbuster.core.MyException
class MovieAlreadyExistsException(code: Int = 400, message: String = "Movie Already Exists") : MyException(code, message)
class MovieNotExistsException(code: Int = 404, message: String = "Movie Doesn't Exists") : MyException(code, message)
@juancho088
juancho088 / mockMovieService.kt
Created June 11, 2018 14:42
Mock Movie Service that is not taking into account security and persistence layer
package com.myblockbuster.movies.services
import com.myblockbuster.core.Page
import com.myblockbuster.core.Pagination
import com.myblockbuster.core.User
import com.myblockbuster.core.services.Service
import com.myblockbuster.movies.Movie
import com.myblockbuster.movies.MovieAlreadyExistsException
import com.myblockbuster.movies.MovieNotExistsException
import kotlin.math.min