All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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