Skip to content

Commit

Permalink
Reorganize some classes
Browse files Browse the repository at this point in the history
  • Loading branch information
loicknuchel committed Oct 31, 2020
1 parent 169ee50 commit 0140a9a
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 46 deletions.
29 changes: 6 additions & 23 deletions src/main/scala/fr/loicknuchel/safeql/Field.scala
Original file line number Diff line number Diff line change
Expand Up @@ -132,35 +132,18 @@ object SqlField {
new SqlField(table, name, JdbcInfo(nullable, index, jdbcType, jdbcDeclaration), None)

def apply[A, T <: Table.SqlTable, T2 <: Table.SqlTable](table: T, name: String, jdbcDeclaration: String, jdbcType: JdbcType, nullable: Boolean, index: Int, references: SqlField[A, T2]): SqlFieldRef[A, T, T2] =
new SqlFieldRef(table, name, JdbcInfo(nullable, index, jdbcType, jdbcDeclaration), None, references)
SqlFieldRef(table, name, JdbcInfo(nullable, index, jdbcType, jdbcDeclaration), None, references)

case class JdbcInfo(nullable: Boolean, index: Int, jdbcType: JdbcType, jdbcDeclaration: String)

}

class SqlFieldRef[A, T <: Table.SqlTable, T2 <: Table.SqlTable](override val table: T,
override val name: String,
override val info: SqlField.JdbcInfo,
override val alias: Option[String],
val references: SqlField[A, T2]) extends SqlField[A, T](table, name, info, alias) {
case class SqlFieldRef[A, T <: Table.SqlTable, T2 <: Table.SqlTable](override val table: T,
override val name: String,
override val info: SqlField.JdbcInfo,
override val alias: Option[String],
references: SqlField[A, T2]) extends SqlField[A, T](table, name, info, alias) {
override def toString: String = s"SqlFieldRef(${table.getName}.$name, ${references.table.getName}.${references.name})"

override def canEqual(other: Any): Boolean = other.isInstanceOf[SqlFieldRef[_, _, _]]

override def equals(other: Any): Boolean = other match {
case that: SqlFieldRef[_, _, _] =>
super.equals(that) &&
(that canEqual this) &&
table == that.table &&
name == that.name &&
references == that.references
case _ => false
}

override def hashCode(): Int = {
val state: List[Any] = List(super.hashCode(), table, name, references)
state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b)
}
}

case class TableField[A](name: String, table: Option[String] = None, alias: Option[String] = None) extends Field[A] {
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/fr/loicknuchel/safeql/Query.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import doobie.util.{Put, Read}
import fr.loicknuchel.safeql.Field.Order
import fr.loicknuchel.safeql.Query.Inner._
import fr.loicknuchel.safeql.Table.Sort
import fr.loicknuchel.safeql.models._
import fr.loicknuchel.safeql.utils.Extensions._

import scala.util.control.NonFatal
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/fr/loicknuchel/safeql/Table.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import fr.loicknuchel.safeql.Query.Inner._
import fr.loicknuchel.safeql.Query.{Delete, Insert, Select, Update}
import fr.loicknuchel.safeql.Table.Inner._
import fr.loicknuchel.safeql.Table.{Join, JoinTable, Sort}
import fr.loicknuchel.safeql.models.{ConflictingTableFields, Exceptions, NotImplementedJoin, UnknownTableFields}

import scala.language.dynamics

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/fr/loicknuchel/safeql/gen/Generator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import java.util.UUID
import cats.effect.IO
import doobie.Update0
import doobie.syntax.connectionio._
import fr.loicknuchel.safeql.FailedScript
import fr.loicknuchel.safeql.gen.reader.{H2Reader, Reader}
import fr.loicknuchel.safeql.gen.writer.Writer
import fr.loicknuchel.safeql.models.FailedScript
import fr.loicknuchel.safeql.utils.Extensions._
import fr.loicknuchel.safeql.utils.FileUtils
import org.flywaydb.core.Flyway
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package fr.loicknuchel.safeql
package fr.loicknuchel.safeql.models

import cats.data.NonEmptyList
import doobie.util.Read
import doobie.util.fragment.Fragment
import fr.loicknuchel.safeql.{Cond, Field, SqlField, Table}

object Exceptions {
def check[A, T <: Table](fields: List[Field[_]], table: T, value: => A): A =
Expand Down Expand Up @@ -37,3 +38,17 @@ case class FailedScript(script: String, cause: Throwable)

case class NotImplementedJoin[T <: Table, T2 <: Table](t: T, t2: T2)
extends Exception(s"Join between ${t.sql} and ${t2.sql} is not implemented")

case class MultiException(errs: NonEmptyList[Throwable]) extends RuntimeException {
override def getMessage: String = errs.toList.map(e => s"\n - ${e.getMessage}").mkString

override def getLocalizedMessage: String = errs.toList.map(e => s"\n - ${e.getLocalizedMessage}").mkString

override def getStackTrace: Array[StackTraceElement] = errs.head.getStackTrace

override def getCause: Throwable = errs.head.getCause
}

object MultiException {
def apply(err: Throwable, others: Throwable*): MultiException = new MultiException(NonEmptyList(err, others.toList))
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package fr.loicknuchel.safeql
package fr.loicknuchel.safeql.models

import cats.data.NonEmptyList
import fr.loicknuchel.safeql.Page.Params

case class Page[A](items: List[A], params: Params, total: Long)
case class Page[A](items: List[A], params: Page.Params, total: Long)

object Page {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import cats.effect.IO
import doobie.syntax.string._
import doobie.util.fragment.Fragment
import doobie.util.fragment.Fragment.const0
import fr.loicknuchel.safeql.models.MultiException

import scala.collection.generic.CanBuildFrom
import scala.collection.mutable
Expand Down
17 changes: 0 additions & 17 deletions src/main/scala/fr/loicknuchel/safeql/utils/MultiException.scala

This file was deleted.

1 change: 1 addition & 0 deletions src/test/scala/fr/loicknuchel/safeql/QuerySpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import cats.data.NonEmptyList
import doobie.util.Put
import doobie.util.meta.Meta
import fr.loicknuchel.safeql.Query.Inner._
import fr.loicknuchel.safeql.models.Page
import fr.loicknuchel.safeql.testingutils.BaseSpec
import fr.loicknuchel.safeql.testingutils.Entities.{Category, User}
import fr.loicknuchel.safeql.testingutils.database.Tables.{CATEGORIES, POSTS, USERS}
Expand Down
1 change: 1 addition & 0 deletions src/test/scala/fr/loicknuchel/safeql/TableSpec.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.loicknuchel.safeql

import fr.loicknuchel.safeql.models.NotImplementedJoin
import fr.loicknuchel.safeql.testingutils.BaseSpec
import fr.loicknuchel.safeql.testingutils.database.Tables.{CATEGORIES, FEATURED, POSTS, USERS}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.loicknuchel.safeql.utils
package fr.loicknuchel.safeql.models

import fr.loicknuchel.safeql.testingutils.BaseSpec

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import cats.data.NonEmptyList
import cats.effect.IO
import doobie.syntax.string._
import doobie.util.fragment.Fragment
import fr.loicknuchel.safeql.models.MultiException
import fr.loicknuchel.safeql.testingutils.BaseSpec
import fr.loicknuchel.safeql.utils.Extensions._

Expand Down

0 comments on commit 0140a9a

Please sign in to comment.