diff --git a/src/main/kotlin/nl/lengrand/imdb/HeavyQueries.kt b/src/main/kotlin/nl/lengrand/imdb/HeavyQueries.kt new file mode 100644 index 0000000..bd16428 --- /dev/null +++ b/src/main/kotlin/nl/lengrand/imdb/HeavyQueries.kt @@ -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()) +// } +// }}"); +} \ No newline at end of file diff --git a/src/main/kotlin/nl/lengrand/imdb/api/NamesApi.kt b/src/main/kotlin/nl/lengrand/imdb/api/NamesApi.kt new file mode 100644 index 0000000..695ad57 --- /dev/null +++ b/src/main/kotlin/nl/lengrand/imdb/api/NamesApi.kt @@ -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() + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/nl/lengrand/imdb/RandomQueries.kt b/src/main/kotlin/nl/lengrand/imdb/queries/RandomQueries.kt similarity index 71% rename from src/main/kotlin/nl/lengrand/imdb/RandomQueries.kt rename to src/main/kotlin/nl/lengrand/imdb/queries/RandomQueries.kt index d91e0ef..8e74260 100644 --- a/src/main/kotlin/nl/lengrand/imdb/RandomQueries.kt +++ b/src/main/kotlin/nl/lengrand/imdb/queries/RandomQueries.kt @@ -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()) +// } +// }}"); } \ No newline at end of file