mirror of
https://github.com/jlengrand/exposed-imdb.git
synced 2026-03-10 08:11:18 +00:00
Last commit
This commit is contained in:
76
src/main/kotlin/nl/lengrand/imdb/HeavyQueries.kt
Normal file
76
src/main/kotlin/nl/lengrand/imdb/HeavyQueries.kt
Normal file
@@ -0,0 +1,76 @@
|
||||
package nl.lengrand.imdb.queries
|
||||
|
||||
import nl.lengrand.imdb.dsl.Names
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
fun main(){
|
||||
val db = Database.connect(
|
||||
"jdbc:mysql://localhost:3306/imdb?useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true",
|
||||
driver = "com.mysql.jdbc.Driver",
|
||||
user = "root",
|
||||
password = ""
|
||||
)
|
||||
|
||||
// Find a actors with a given name
|
||||
transaction(db) {
|
||||
var result = Names.select { Names.primaryName like "%cotillard" }.toList()
|
||||
println(result.size)
|
||||
}
|
||||
|
||||
// Trying with DAO
|
||||
|
||||
|
||||
// Find all the movies someone played in
|
||||
// Not possible currently, need join table
|
||||
|
||||
// Find all the batman movies
|
||||
// transaction(db) {
|
||||
// var result = Titles.select { Titles.primaryTitle like "%batman%"}.toList()
|
||||
// println(result.size)
|
||||
// println(result)
|
||||
// println(result.first())
|
||||
// }
|
||||
|
||||
// Find the rating for a specific movie
|
||||
// println("Ratings query took : ${measureTimeMillis() {
|
||||
// transaction(db) {
|
||||
// var result = (Titles crossJoin Ratings).slice(Titles.primaryTitle, Titles.titleType, Ratings.averageRating, Ratings.numVotes).select {
|
||||
// ((Titles.primaryTitle like "The Lego Batman Movie") and (Titles.titleType like "movie")
|
||||
// and Titles.tconst.eq(Ratings.tconst))
|
||||
// }.toList()
|
||||
//
|
||||
// println(result.size)
|
||||
// println(result)
|
||||
// println(result.first())
|
||||
// }
|
||||
// }}");
|
||||
|
||||
// println("Ratings query took : ${measureTimeMillis() {
|
||||
// transaction(db) {
|
||||
// var result = (Titles innerJoin Ratings).slice(Titles.primaryTitle, Titles.titleType, Ratings.averageRating, Ratings.numVotes).select {
|
||||
// ((Titles.primaryTitle like "The Lego Batman Movie") and (Titles.titleType like "movie")
|
||||
// and Titles.tconst.eq(Ratings.tconst))
|
||||
// }.toList()
|
||||
//
|
||||
// println(result.size)
|
||||
// println(result)
|
||||
// println(result.first())
|
||||
// }
|
||||
// }}");
|
||||
|
||||
// println("Ratings query took : ${measureTimeMillis() {
|
||||
// transaction(db) {
|
||||
// var result = (Titles innerJoin Ratings).slice(Titles.primaryTitle, Titles.titleType, Ratings.averageRating, Ratings.numVotes).select {
|
||||
// ((Titles.primaryTitle like "%batman%") and (Titles.titleType like "movie")
|
||||
// and Titles.tconst.eq(Ratings.tconst))
|
||||
// }.orderBy(Ratings.averageRating)
|
||||
// .toList()
|
||||
//
|
||||
// println(result.size)
|
||||
// println(result)
|
||||
// println(result.last())
|
||||
// }
|
||||
// }}");
|
||||
}
|
||||
12
src/main/kotlin/nl/lengrand/imdb/api/NamesApi.kt
Normal file
12
src/main/kotlin/nl/lengrand/imdb/api/NamesApi.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package nl.lengrand.imdb.api
|
||||
|
||||
import nl.lengrand.imdb.dsl.Names
|
||||
import org.jetbrains.exposed.sql.select
|
||||
|
||||
class NamesApi {
|
||||
companion object{
|
||||
fun get(searchTerm: String){
|
||||
Names.select { Names.primaryName like "%cotillard" }.toList()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package nl.lengrand.imdb
|
||||
|
||||
import nl.lengrand.imdb.dsl.Names
|
||||
import nl.lengrand.imdb.dsl.Ratings
|
||||
import nl.lengrand.imdb.dsl.Titles
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
@@ -16,11 +17,14 @@ fun main(){
|
||||
password = ""
|
||||
)
|
||||
|
||||
// Find a actors with a given name
|
||||
// transaction(db) {
|
||||
// var result = Names.select { Names.primaryName like "%cotillard" }.toList()
|
||||
// println(result.size)
|
||||
// }
|
||||
// Find a actors with a given name
|
||||
transaction(db) {
|
||||
var result = Names.select { Names.primaryName like "%cotillard" }.toList()
|
||||
println(result.size)
|
||||
}
|
||||
|
||||
// Trying with DAO
|
||||
|
||||
|
||||
// Find all the movies someone played in
|
||||
// Not possible currently, need join table
|
||||
@@ -60,17 +64,17 @@ fun main(){
|
||||
// }
|
||||
// }}");
|
||||
|
||||
println("Ratings query took : ${measureTimeMillis() {
|
||||
transaction(db) {
|
||||
var result = (Titles innerJoin Ratings).slice(Titles.primaryTitle, Titles.titleType, Ratings.averageRating, Ratings.numVotes).select {
|
||||
((Titles.primaryTitle like "%batman%") and (Titles.titleType like "movie")
|
||||
and Titles.tconst.eq(Ratings.tconst))
|
||||
}.orderBy(Ratings.averageRating)
|
||||
.toList()
|
||||
|
||||
println(result.size)
|
||||
println(result)
|
||||
println(result.last())
|
||||
}
|
||||
}}");
|
||||
// println("Ratings query took : ${measureTimeMillis() {
|
||||
// transaction(db) {
|
||||
// var result = (Titles innerJoin Ratings).slice(Titles.primaryTitle, Titles.titleType, Ratings.averageRating, Ratings.numVotes).select {
|
||||
// ((Titles.primaryTitle like "%batman%") and (Titles.titleType like "movie")
|
||||
// and Titles.tconst.eq(Ratings.tconst))
|
||||
// }.orderBy(Ratings.averageRating)
|
||||
// .toList()
|
||||
//
|
||||
// println(result.size)
|
||||
// println(result)
|
||||
// println(result.last())
|
||||
// }
|
||||
// }}");
|
||||
}
|
||||
Reference in New Issue
Block a user