slick many-to-many repo scala
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
these are random client and course repos
@Singleton
class CourseRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
class CourseTable(_tableTag: Tag) extends Table[Course](_tableTag, "course") {
def * = (courseId, name) <> ((Course.apply _).tupled, Course.unapply)
def ? = (Rep.Some(courseId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Course.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val courseId: Rep[Int] = column[Int]("course_id", O.PrimaryKey)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val courses = TableQuery[CourseTable]
def create(course: Course) = db.run {
courses += course
}
def findById(courseId: Int): Future[Course] = db.run {
courses.filter(_.courseId === courseId).result.head
}
def createMany(courseList:Seq[Course]) = db.run{
courses ++= courseList
}
def list(): Future[Seq[Course]] = db.run {
courses.result
}
}
@Singleton
class ClientRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
private val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
private class ClientTable(tag: Tag) extends Table[Client](tag, "client") {
def * = (userId, name) <> ((Client.apply _).tupled, Client.unapply)
def ? = (Rep.Some(userId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Client.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val userId: Rep[Int] = column[Int]("client_id", O.PrimaryKey, O.AutoInc)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val people = TableQuery[ClientTable]
def create(client: Client) = db.run {
people += client
}
def findById(clientId: Int) = db.run {
people.filter(_.userId === clientId).result.head
}
def list(): Future[Seq[Client]] = db.run {
people.result
}
}
What my problem is, i have a 3rd table client_course, where i map many to many relation between these two tables, and to do join i have to access client table and course table, but my client_course repo is in another class and i cant simply access table from clientrepo or courserepo, so my question is, how do i write a client_course repo and access tables i need to do some join queries?
example
for {
(client, course) <- clients join courses
} yield (client, course)
to do so i have to access clients and courses table, which are managed by other repos, should i simply put TableQuery for client and course in my client_course repo?
like so
private val clientCourses = TableQuery[ClientCourse]
private val courses = TableQuery[Course]
private val clients = TableQuery[Client]
scala join many-to-many slick
add a comment |
these are random client and course repos
@Singleton
class CourseRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
class CourseTable(_tableTag: Tag) extends Table[Course](_tableTag, "course") {
def * = (courseId, name) <> ((Course.apply _).tupled, Course.unapply)
def ? = (Rep.Some(courseId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Course.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val courseId: Rep[Int] = column[Int]("course_id", O.PrimaryKey)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val courses = TableQuery[CourseTable]
def create(course: Course) = db.run {
courses += course
}
def findById(courseId: Int): Future[Course] = db.run {
courses.filter(_.courseId === courseId).result.head
}
def createMany(courseList:Seq[Course]) = db.run{
courses ++= courseList
}
def list(): Future[Seq[Course]] = db.run {
courses.result
}
}
@Singleton
class ClientRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
private val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
private class ClientTable(tag: Tag) extends Table[Client](tag, "client") {
def * = (userId, name) <> ((Client.apply _).tupled, Client.unapply)
def ? = (Rep.Some(userId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Client.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val userId: Rep[Int] = column[Int]("client_id", O.PrimaryKey, O.AutoInc)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val people = TableQuery[ClientTable]
def create(client: Client) = db.run {
people += client
}
def findById(clientId: Int) = db.run {
people.filter(_.userId === clientId).result.head
}
def list(): Future[Seq[Client]] = db.run {
people.result
}
}
What my problem is, i have a 3rd table client_course, where i map many to many relation between these two tables, and to do join i have to access client table and course table, but my client_course repo is in another class and i cant simply access table from clientrepo or courserepo, so my question is, how do i write a client_course repo and access tables i need to do some join queries?
example
for {
(client, course) <- clients join courses
} yield (client, course)
to do so i have to access clients and courses table, which are managed by other repos, should i simply put TableQuery for client and course in my client_course repo?
like so
private val clientCourses = TableQuery[ClientCourse]
private val courses = TableQuery[Course]
private val clients = TableQuery[Client]
scala join many-to-many slick
add a comment |
these are random client and course repos
@Singleton
class CourseRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
class CourseTable(_tableTag: Tag) extends Table[Course](_tableTag, "course") {
def * = (courseId, name) <> ((Course.apply _).tupled, Course.unapply)
def ? = (Rep.Some(courseId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Course.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val courseId: Rep[Int] = column[Int]("course_id", O.PrimaryKey)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val courses = TableQuery[CourseTable]
def create(course: Course) = db.run {
courses += course
}
def findById(courseId: Int): Future[Course] = db.run {
courses.filter(_.courseId === courseId).result.head
}
def createMany(courseList:Seq[Course]) = db.run{
courses ++= courseList
}
def list(): Future[Seq[Course]] = db.run {
courses.result
}
}
@Singleton
class ClientRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
private val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
private class ClientTable(tag: Tag) extends Table[Client](tag, "client") {
def * = (userId, name) <> ((Client.apply _).tupled, Client.unapply)
def ? = (Rep.Some(userId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Client.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val userId: Rep[Int] = column[Int]("client_id", O.PrimaryKey, O.AutoInc)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val people = TableQuery[ClientTable]
def create(client: Client) = db.run {
people += client
}
def findById(clientId: Int) = db.run {
people.filter(_.userId === clientId).result.head
}
def list(): Future[Seq[Client]] = db.run {
people.result
}
}
What my problem is, i have a 3rd table client_course, where i map many to many relation between these two tables, and to do join i have to access client table and course table, but my client_course repo is in another class and i cant simply access table from clientrepo or courserepo, so my question is, how do i write a client_course repo and access tables i need to do some join queries?
example
for {
(client, course) <- clients join courses
} yield (client, course)
to do so i have to access clients and courses table, which are managed by other repos, should i simply put TableQuery for client and course in my client_course repo?
like so
private val clientCourses = TableQuery[ClientCourse]
private val courses = TableQuery[Course]
private val clients = TableQuery[Client]
scala join many-to-many slick
these are random client and course repos
@Singleton
class CourseRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
class CourseTable(_tableTag: Tag) extends Table[Course](_tableTag, "course") {
def * = (courseId, name) <> ((Course.apply _).tupled, Course.unapply)
def ? = (Rep.Some(courseId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Course.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val courseId: Rep[Int] = column[Int]("course_id", O.PrimaryKey)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val courses = TableQuery[CourseTable]
def create(course: Course) = db.run {
courses += course
}
def findById(courseId: Int): Future[Course] = db.run {
courses.filter(_.courseId === courseId).result.head
}
def createMany(courseList:Seq[Course]) = db.run{
courses ++= courseList
}
def list(): Future[Seq[Course]] = db.run {
courses.result
}
}
@Singleton
class ClientRepository @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {
// We want the JdbcProfile for this provider
private val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
private class ClientTable(tag: Tag) extends Table[Client](tag, "client") {
def * = (userId, name) <> ((Client.apply _).tupled, Client.unapply)
def ? = (Rep.Some(userId), Rep.Some(name)).shaped.<>({ r => import r._; _1.map(_ => (Client.apply _).tupled((_1.get, _2.get))) }, (_: Any) => throw new Exception("Inserting into ? projection not supported."))
val userId: Rep[Int] = column[Int]("client_id", O.PrimaryKey, O.AutoInc)
val name: Rep[String] = column[String]("name", O.Length(255, varying = true))
}
private val people = TableQuery[ClientTable]
def create(client: Client) = db.run {
people += client
}
def findById(clientId: Int) = db.run {
people.filter(_.userId === clientId).result.head
}
def list(): Future[Seq[Client]] = db.run {
people.result
}
}
What my problem is, i have a 3rd table client_course, where i map many to many relation between these two tables, and to do join i have to access client table and course table, but my client_course repo is in another class and i cant simply access table from clientrepo or courserepo, so my question is, how do i write a client_course repo and access tables i need to do some join queries?
example
for {
(client, course) <- clients join courses
} yield (client, course)
to do so i have to access clients and courses table, which are managed by other repos, should i simply put TableQuery for client and course in my client_course repo?
like so
private val clientCourses = TableQuery[ClientCourse]
private val courses = TableQuery[Course]
private val clients = TableQuery[Client]
scala join many-to-many slick
scala join many-to-many slick
asked Nov 25 '18 at 7:01
adamblumsteinadamblumstein
204
204
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53465372%2fslick-many-to-many-repo-scala%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53465372%2fslick-many-to-many-repo-scala%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown