के साथ प्ले 2.4 में टेबल निर्माण मुझे प्ले-स्लिम मॉड्यूल ऊपर और चल रहा है और एप्लिकेशन प्रारंभ के दौरान डेटाबेस में आवश्यक तालिकाओं को बनाने के लिए विकास का उपयोग भी कर रहा हूं।play-slick 1.0
काम करने के लिए विकास के लिए इसे 1.sql
स्क्रिप्ट लिखना आवश्यक है जिसमें तालिका परिभाषाएं शामिल हैं जिन्हें मैं बनाना चाहता हूं। फिलहाल यह इस तरह दिखता है:
# --- !Ups
CREATE TABLE Users (
id UUID NOT NULL,
email varchar(255) NOT NULL,
password varchar(255) NOT NULL,
firstname varchar(255),
lastname varchar(255),
username varchar(255),
age varchar(255),
PRIMARY KEY (id)
);
# --- !Downs
DROP TABLE Users;
तो स्लिक दूर इतना अच्छा लेकिन के लिए सही ढंग से काम करने के लिए यह भी मेरी मेज की परिभाषा जानने की जरूरत।
class UserDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
private val Users = TableQuery[UsersTable]
def all(): Future[Seq[User]] = db.run(Users.result)
def insert(user: User): Future[User] = db.run(Users += user).map { _ => user }
//Table definition
private class UsersTable(tag:Tag) extends Table[User](tag,"users"){
def id = column[UUID]("id", O.PrimaryKey)
def email = column[String]("email")
def password = column[String]("password")
def firstname = column[Option[String]]("firstname")
def lastname = column[Option[String]]("lastname")
def username = column[Option[String]]("username")
def age = column[Int]("age")
def * = (id, email,password,firstname,lastname,username,age) <> ((User.apply _).tupled, User.unapply)
}
}
मैं मूल रूप से अब दो अलग अलग स्थानों में एक ही तालिका परिभाषा है: तो मैं एक UserDAO
वस्तु जो इस तरह दिखता है। एक बार 1.sql
स्क्रिप्ट में और एक बार UserDAO कक्षा में।
मुझे वास्तव में यह डिज़ाइन पसंद नहीं है! दो अलग-अलग स्थानों में एक ही टेबल परिभाषाएं सही नहीं लगती हैं।
क्या उपयोगकर्ताडाओ कक्षाओं के अंदर तालिका परिभाषाओं से विकास स्क्रिप्ट उत्पन्न करने का कोई तरीका है? या स्टार्टअप के दौरान टेबल परिभाषाओं को उत्पन्न करने का एक बिल्कुल अलग तरीका है (शायद केवल स्लिम का उपयोग करके)? मैं वास्तव में केवल स्लिम टेबल परिभाषा का उपयोग करना चाहता हूं और कष्टप्रद एसक्यूएल स्क्रिप्ट से छुटकारा पा सकता हूं।
मैं play-2.4
और play-slick-1.0
धन्यवाद एक बहुत उपयोग कर रहा हूँ।
कहाँ वास्तव में आप रखा है 'TableQuery [UsersTable] .schema.create' फोन:
सभी कि इस तरह के रूप दायरे में ड्राइवर एपीआई की आवश्यकता होगी? – evermean
निम्नलिखित के दायरे में यह बहुत महत्वपूर्ण है: वैल प्रोफाइल = slick.driver.H2Driver आयात प्रोफ़ाइल.एपीआई__ – bjfletcher
टिप्पणियों के साथ कोई नई पंक्तियां नहीं, लेकिन अपडेट किए गए उत्तर के नीचे देखें। – bjfletcher