PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मैं स्कैला में टाइपसेफ स्लिक के साथ एक कस्टम कॉलम प्रकार कैसे बना सकता हूं?

डॉक्स से उद्धरण ( http://slick.typesafe.com/doc/1.0.1/lifted-embedding.html#user-defined-functions-and-types ):

// An algebraic data type for booleans
sealed trait Bool
case object True extends Bool
case object False extends Bool

// And a TypeMapper that maps it to Int values 1 and 0
implicit val boolTypeMapper = MappedTypeMapper.base[Bool, Int](
  { b => if(b == True) 1 else 0 },    // map Bool to Int
  { i => if(i == 1) True else False } // map Int to Bool
)

इसे फ़ाइल स्थिति में अनुकूलित करना:

sealed trait FileStatus
case object New extends FileStatus
case object Uploading extends FileStatus
...

implicit val fileStatusTypeMapper = MappedTypeMapper.base[FileStatus, String](
  {
    case New => "new"
    case Uploading => "uploading"
    ...
  },{
    case "new" => New
    case "uploading" => Uploading
    ...
  }
)

अपडेट करें:

एक और, कम बेमानी, लेकिन संभवतः कम स्पष्ट संस्करण:

sealed trait FileStatus
case object New extends FileStatus
case object Uploading extends FileStatus
...

val statusMap = Map(
    New -> "new",
    Uploading -> "uploading",
    ...
)

implicit val fileStatusTypeMapper = MappedTypeMapper.base[FileStatus, String](
  statusMap,
  statusMap.map(_.swap)
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मैं क्लाइंट-साइड (एक्सप्रेस/नोड.जेएस) में पोस्टग्रेएसक्यूएल (पीजी) का उपयोग कर सकता हूं

  2. समूह का उपयोग करते समय npgsql डेटा प्रकार अज्ञात

  3. PostgreSQL विशेषाधिकार और सुरक्षा - सार्वजनिक योजना को बंद करना

  4. पोस्टग्रेस्क्ल:आदेशित परिणाम

  5. EXECUTE FORMAT का उपयोग कैसे करें ... पोस्टग्रेज फ़ंक्शन में उपयोग करना