com.mchange.feedletter.db.PgSchema.scala~ Maven / Gradle / Ivy
package com.mchange.feedletter.db
object PgSchema:
trait TraitV0:
val TABLE_METADATA_CREATE =
"CREATE TABLE metadata( key VARCHAR(64) PRIMARY KEY, value VARCHAR(64) NOT NULL )"
trait TraitV1 extends TraitV0:
val TABLE_FEED_CREATE =
"CREATE TABLE feed( url VARCHAR(1024) PRIMARY KEY )"
val TABLE_ITEM_CREATE =
"""|CREATE TABLE item(
| feed_url VARCHAR(1024),
| guid VARCHAR(1024),
| contentHash INTEGER,
| lastChecked TIMESTAMP,
| stableSince TIMESTAMP,
| mailable BOOLEAN,
| PRIMARY KEY(feed_url, guid),
| FOREIGN KEY(feed_url) REFERENCES feed(url)
|)""".stripMargin
val TYPE_SUBSCRIPTION_FREQUENCY_CREATE =
"CREATE TYPE subscription_frequency AS ENUM('immediate', 'weekly')"
val TABLE_SUBSCRIPTION_CREATE =
"""|CREATE TABLE subscription(
| email VARCHAR(256),
| feed_url VARCHAR(256),
| frequency subscription_frequency,
| PRIMARY KEY( email, feed_url ),
| FOREIGN KEY( feed_url ) REFERENCES feed(url)
|)""".stripMargin
val TABLE_QUEUED_CREATE =
"""|CREATE TABLE queued(
| email VARCHAR(256),
| feed_url VARCHAR(1024),
| guid VARCHAR(1024),
| PRIMARY KEY(email, feed_url, guid),
| FOREIGN KEY( email, feed_url ) REFERENCES subscription(email, feed_url)
|)""".stripMargin
val SEQUENCE_QUEUE_SEQ_CREATE =
"CREATE SEQUENCE queue_seq"
val TABLE_QUEUE_CREATE =
"""|CREATE TABLE queue(
| seqnum queue_seq,
| email VARCHAR(256),
| feed_url VARCHAR(1024),
| guid VARCHAR(1024)
| PRIMARY KEY( seqnum )
|)""".stripMargin
object V0 extends TraitV0
object V1 extends TraitV1
© 2015 - 2025 Weber Informatics LLC | Privacy Policy