diff --git a/src/main/scala/fr/loicknuchel/safeql/Field.scala b/src/main/scala/fr/loicknuchel/safeql/Field.scala index 2188942..739c301 100644 --- a/src/main/scala/fr/loicknuchel/safeql/Field.scala +++ b/src/main/scala/fr/loicknuchel/safeql/Field.scala @@ -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] { diff --git a/src/main/scala/fr/loicknuchel/safeql/Query.scala b/src/main/scala/fr/loicknuchel/safeql/Query.scala index dd3b389..2606077 100644 --- a/src/main/scala/fr/loicknuchel/safeql/Query.scala +++ b/src/main/scala/fr/loicknuchel/safeql/Query.scala @@ -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 diff --git a/src/main/scala/fr/loicknuchel/safeql/Table.scala b/src/main/scala/fr/loicknuchel/safeql/Table.scala index 6b769dd..f4d58c0 100644 --- a/src/main/scala/fr/loicknuchel/safeql/Table.scala +++ b/src/main/scala/fr/loicknuchel/safeql/Table.scala @@ -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 diff --git a/src/main/scala/fr/loicknuchel/safeql/gen/Generator.scala b/src/main/scala/fr/loicknuchel/safeql/gen/Generator.scala index 929d1d8..17e1673 100644 --- a/src/main/scala/fr/loicknuchel/safeql/gen/Generator.scala +++ b/src/main/scala/fr/loicknuchel/safeql/gen/Generator.scala @@ -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 diff --git a/src/main/scala/fr/loicknuchel/safeql/Exceptions.scala b/src/main/scala/fr/loicknuchel/safeql/models/Exceptions.scala similarity index 74% rename from src/main/scala/fr/loicknuchel/safeql/Exceptions.scala rename to src/main/scala/fr/loicknuchel/safeql/models/Exceptions.scala index 456fa43..4a50dea 100644 --- a/src/main/scala/fr/loicknuchel/safeql/Exceptions.scala +++ b/src/main/scala/fr/loicknuchel/safeql/models/Exceptions.scala @@ -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 = @@ -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)) +} diff --git a/src/main/scala/fr/loicknuchel/safeql/Page.scala b/src/main/scala/fr/loicknuchel/safeql/models/Page.scala similarity index 87% rename from src/main/scala/fr/loicknuchel/safeql/Page.scala rename to src/main/scala/fr/loicknuchel/safeql/models/Page.scala index 20e1dda..d632ac8 100644 --- a/src/main/scala/fr/loicknuchel/safeql/Page.scala +++ b/src/main/scala/fr/loicknuchel/safeql/models/Page.scala @@ -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 { diff --git a/src/main/scala/fr/loicknuchel/safeql/utils/Extensions.scala b/src/main/scala/fr/loicknuchel/safeql/utils/Extensions.scala index 88da544..20f40ca 100644 --- a/src/main/scala/fr/loicknuchel/safeql/utils/Extensions.scala +++ b/src/main/scala/fr/loicknuchel/safeql/utils/Extensions.scala @@ -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 diff --git a/src/main/scala/fr/loicknuchel/safeql/utils/MultiException.scala b/src/main/scala/fr/loicknuchel/safeql/utils/MultiException.scala deleted file mode 100644 index 75c959a..0000000 --- a/src/main/scala/fr/loicknuchel/safeql/utils/MultiException.scala +++ /dev/null @@ -1,17 +0,0 @@ -package fr.loicknuchel.safeql.utils - -import cats.data.NonEmptyList - -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)) -} diff --git a/src/test/scala/fr/loicknuchel/safeql/QuerySpec.scala b/src/test/scala/fr/loicknuchel/safeql/QuerySpec.scala index 50c267c..c114f9e 100644 --- a/src/test/scala/fr/loicknuchel/safeql/QuerySpec.scala +++ b/src/test/scala/fr/loicknuchel/safeql/QuerySpec.scala @@ -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} diff --git a/src/test/scala/fr/loicknuchel/safeql/TableSpec.scala b/src/test/scala/fr/loicknuchel/safeql/TableSpec.scala index c44c601..69c4372 100644 --- a/src/test/scala/fr/loicknuchel/safeql/TableSpec.scala +++ b/src/test/scala/fr/loicknuchel/safeql/TableSpec.scala @@ -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} diff --git a/src/test/scala/fr/loicknuchel/safeql/utils/MultiExceptionSpec.scala b/src/test/scala/fr/loicknuchel/safeql/models/MultiExceptionSpec.scala similarity index 93% rename from src/test/scala/fr/loicknuchel/safeql/utils/MultiExceptionSpec.scala rename to src/test/scala/fr/loicknuchel/safeql/models/MultiExceptionSpec.scala index 6ce1e6a..9da9480 100644 --- a/src/test/scala/fr/loicknuchel/safeql/utils/MultiExceptionSpec.scala +++ b/src/test/scala/fr/loicknuchel/safeql/models/MultiExceptionSpec.scala @@ -1,4 +1,4 @@ -package fr.loicknuchel.safeql.utils +package fr.loicknuchel.safeql.models import fr.loicknuchel.safeql.testingutils.BaseSpec diff --git a/src/test/scala/fr/loicknuchel/safeql/utils/ExtensionsSpec.scala b/src/test/scala/fr/loicknuchel/safeql/utils/ExtensionsSpec.scala index 0337eb3..219cc24 100644 --- a/src/test/scala/fr/loicknuchel/safeql/utils/ExtensionsSpec.scala +++ b/src/test/scala/fr/loicknuchel/safeql/utils/ExtensionsSpec.scala @@ -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._