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

com.github.tototoshi.play2.flyway.PluginConfiguration.scala Maven / Gradle / Ivy

There is a newer version: 1.2.2
Show newest version
/*
 * Copyright 2013 Toshiyuki Takahashi
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.github.tototoshi.play2.flyway

trait PluginConfiguration {
  private val applyPathRegex = s"""/@flyway/([a-zA-Z0-9_]+)/migrate""".r
  private val showInfoPathRegex = """/@flyway/([a-zA-Z0-9_]+)""".r
  private val cleanPathRegex = """/@flyway/([a-zA-Z0-9_]+)/clean""".r
  private val initPathRegex = """/@flyway/([a-zA-Z0-9_]+)/init/""".r
  private val versionedInitPathRegex = """/@flyway/([a-zA-Z0-9_]+)/init/([0-9.]+)""".r

  object migratePath {

    def apply(dbName: String): String = {
      s"/@flyway/${dbName}/migrate"
    }

    def unapply(path: String): Option[String] = {
      applyPathRegex.findFirstMatchIn(path).map(_.group(1))
    }

  }

  object showInfoPath {

    def unapply(path: String): Option[String] = {
      showInfoPathRegex.findFirstMatchIn(path).map(_.group(1))
    }

  }

  object cleanPath {

    def apply(dbName: String): String = {
      s"/@flyway/${dbName}/clean"
    }

    def unapply(path: String): Option[String] = {
      cleanPathRegex.findFirstMatchIn(path).map(_.group(1))
    }

  }

  object versionedInitPath {
    def apply(dbName: String, version: String): String = {
      s"/@flyway/${dbName}/init/${version}"
    }

    def unapply(path: String): Option[(String, String)] = {
      versionedInitPathRegex.findFirstMatchIn(path) match {
        case None => None
        case Some(matched) => Some(matched.group(1), matched.group(2))
      }
    }
  }

  object initPath {

    def apply(dbName: String): String = {
      s"/@flyway/${dbName}/init"
    }

    def unapply(path: String): Option[String] = {
      initPathRegex.findFirstMatchIn(path).map(_.group(1))
    }

  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy