Adoptions to explicit API (WIP)

This commit is contained in:
Oliver Rümpelein 2021-03-06 14:53:49 +01:00
parent bdd8c1d7d9
commit 00f74792d5
48 changed files with 63 additions and 62 deletions

View file

@ -10,12 +10,12 @@ import de.pheerai.rcdbquery.dataMappings.vendor.Vendor.*
import de.pheerai.rcdbquery.dataMappings.vendor.vendors import de.pheerai.rcdbquery.dataMappings.vendor.vendors
import de.pheerai.rcdbquery.dsl.rcdbQuery import de.pheerai.rcdbquery.dsl.rcdbQuery
fun main() { public fun main() {
println(generateNameQueryUrl()) println(generateNameQueryUrl())
println(generatePageQueryUrl()) println(generatePageQueryUrl())
} }
fun generateNameQueryUrl() = rcdbQuery { private fun generateNameQueryUrl() = rcdbQuery {
searchType(SearchType.COASTER) searchType(SearchType.COASTER)
searchTerm("Dragon") searchTerm("Dragon")
vendors { vendors {
@ -29,7 +29,7 @@ fun generateNameQueryUrl() = rcdbQuery {
} }
} }
fun generatePageQueryUrl() = rcdbQuery { private fun generatePageQueryUrl() = rcdbQuery {
page(3) page(3)
searchType(SearchType.COASTER) searchType(SearchType.COASTER)
vendors { vendors {

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.category
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
enum class Category( public enum class Category(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long
@ -38,7 +38,7 @@ enum class Category(
constructor(name: String, paramValue: Long) : this(name, name, paramValue) constructor(name: String, paramValue: Long) : this(name, name, paramValue)
companion object : StringGeneratable<Category> { internal companion object : StringGeneratable<Category> {
override val paramKey = "ca" override val paramKey = "ca"
override fun of(input: String): Category? = when (input) { override fun of(input: String): Category? = when (input) {
"4th Dimension" -> FOURTH_DIMENSION "4th Dimension" -> FOURTH_DIMENSION

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.category
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class CategoryBuilder : MultiParamBuilder<Long, Category>() { internal class CategoryBuilder : MultiParamBuilder<Long, Category>() {
override fun add(param: Category): CategoryBuilder { override fun add(param: Category): CategoryBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.category
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.category(body: CategoryBuilder.() -> CategoryBuilder): ParamsCollector { private fun ParamsCollector.category(body: CategoryBuilder.() -> CategoryBuilder): ParamsCollector {
val builder = CategoryBuilder() val builder = CategoryBuilder()
builder.body() builder.body()
this[Category.paramKey] = builder.build() this[Category.paramKey] = builder.build()

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.classification
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
enum class Classification( internal enum class Classification(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.classification
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class ClassificationBuilder : MultiParamBuilder<Long, Classification>() { internal class ClassificationBuilder : MultiParamBuilder<Long, Classification>() {
override fun add(param: Classification): ClassificationBuilder { override fun add(param: Classification): ClassificationBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.classification
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.classification(body: ClassificationBuilder.() -> ClassificationBuilder): ParamsCollector { private fun ParamsCollector.classification(body: ClassificationBuilder.() -> ClassificationBuilder): ParamsCollector {
val builder = ClassificationBuilder() val builder = ClassificationBuilder()
builder.body() builder.body()
this[Classification.paramKey] = builder.build() this[Classification.paramKey] = builder.build()

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.design
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
enum class Design( internal enum class Design(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.design
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class DesignBuilder : MultiParamBuilder<Long, Design>() { internal class DesignBuilder : MultiParamBuilder<Long, Design>() {
override fun add(param: Design): DesignBuilder { override fun add(param: Design): DesignBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.design
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.design(body: DesignBuilder.() -> DesignBuilder): ParamsCollector { private fun ParamsCollector.design(body: DesignBuilder.() -> DesignBuilder): ParamsCollector {
val builder = DesignBuilder() val builder = DesignBuilder()
builder.body() builder.body()
this[Design.paramKey] = builder.build() this[Design.paramKey] = builder.build()

View file

@ -1,6 +1,6 @@
package de.pheerai.rcdbquery.dataMappings.internal package de.pheerai.rcdbquery.dataMappings.internal
abstract class MultiParamBuilder<out U : Any, T : RcdbParamOption<U>> { internal abstract class MultiParamBuilder<out U : Any, T : RcdbParamOption<U>> {
private val paramList: MutableList<T> = mutableListOf() private val paramList: MutableList<T> = mutableListOf()
open fun add(param: T): MultiParamBuilder<U, T> { open fun add(param: T): MultiParamBuilder<U, T> {

View file

@ -1,5 +1,5 @@
package de.pheerai.rcdbquery.dataMappings.internal package de.pheerai.rcdbquery.dataMappings.internal
interface ParamKey { internal interface ParamKey {
val paramKey: String val paramKey: String
} }

View file

@ -1,6 +1,6 @@
package de.pheerai.rcdbquery.dataMappings.internal package de.pheerai.rcdbquery.dataMappings.internal
interface RcdbItem { internal interface RcdbItem {
val url: String val url: String
get() ="https://www.rcdb.com/${id}.htm" get() ="https://www.rcdb.com/${id}.htm"
val id: Long val id: Long

View file

@ -1,6 +1,6 @@
package de.pheerai.rcdbquery.dataMappings.internal package de.pheerai.rcdbquery.dataMappings.internal
interface RcdbParamOption<out T> { internal interface RcdbParamOption<out T> {
val prettyName: String val prettyName: String
val fullName: String val fullName: String
val paramValue: T val paramValue: T

View file

@ -1,5 +1,5 @@
package de.pheerai.rcdbquery.dataMappings.internal package de.pheerai.rcdbquery.dataMappings.internal
interface RelevantForAll { internal interface RelevantForAll {
val relevantForAll: Boolean val relevantForAll: Boolean
} }

View file

@ -1,5 +1,5 @@
package de.pheerai.rcdbquery.dataMappings.internal package de.pheerai.rcdbquery.dataMappings.internal
interface StringGeneratable<T>: ParamKey { internal interface StringGeneratable<T>: ParamKey {
fun of(input: String): T? fun of(input: String): T?
} }

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.layout
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
enum class Layout( internal enum class Layout(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.layout
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class LayoutBuilder : MultiParamBuilder<Long, Layout>() { internal class LayoutBuilder : MultiParamBuilder<Long, Layout>() {
override fun add(param: Layout): LayoutBuilder { override fun add(param: Layout): LayoutBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.layout
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.layout(body: LayoutBuilder.() -> LayoutBuilder): ParamsCollector { private fun ParamsCollector.layout(body: LayoutBuilder.() -> LayoutBuilder): ParamsCollector {
val builder = LayoutBuilder() val builder = LayoutBuilder()
with(Layout) { with(Layout) {
builder.body() builder.body()

View file

@ -3,14 +3,13 @@ package de.pheerai.rcdbquery.dataMappings.order
import de.pheerai.rcdbquery.dataMappings.internal.ParamKey import de.pheerai.rcdbquery.dataMappings.internal.ParamKey
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.RelevantForAll import de.pheerai.rcdbquery.dataMappings.internal.RelevantForAll
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
@Suppress("unused") @Suppress("unused")
enum class Order( internal enum class Order(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long, override val paramValue: Long,
override val relevantForAll: Boolean = true override val relevantForAll: Boolean = true,
) : RcdbParamOption<Long>, ) : RcdbParamOption<Long>,
RelevantForAll { RelevantForAll {
IMAGES("Images", "Amount of Images", 0), IMAGES("Images", "Amount of Images", 0),

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.order
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class OrderBuilder : MultiParamBuilder<Long, Order>() { internal class OrderBuilder : MultiParamBuilder<Long, Order>() {
override fun add(param: Order): OrderBuilder { override fun add(param: Order): OrderBuilder {
super.add(param) super.add(param)
return this return this
@ -18,6 +18,6 @@ class OrderBuilder : MultiParamBuilder<Long, Order>() {
return this return this
} }
override fun Order.invoke() = add(this) override operator fun Order.invoke() = add(this)
fun allRelevant() = this.addAll(Order.values().filter { it.relevantForAll }) fun allRelevant() = this.addAll(Order.values().filter { it.relevantForAll })
} }

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.order
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.sortBy(body: OrderBuilder.() -> OrderBuilder): ParamsCollector { internal fun ParamsCollector.sortBy(body: OrderBuilder.() -> OrderBuilder): ParamsCollector {
val builder = OrderBuilder() val builder = OrderBuilder()
builder.body() builder.body()
this[Order.paramKey] = builder.build() this[Order.paramKey] = builder.build()

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.page
import de.pheerai.rcdbquery.dataMappings.internal.ParamKey import de.pheerai.rcdbquery.dataMappings.internal.ParamKey
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
class Page(override val paramValue: Long) : internal class Page(override val paramValue: Long) :
RcdbParamOption<Long> { RcdbParamOption<Long> {
override val fullName = "The page to show" override val fullName = "The page to show"
override val prettyName = "Page" override val prettyName = "Page"

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.page
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.page(page: Long) = also { internal fun ParamsCollector.page(page: Long) = also {
this[Page.paramKey] = this[Page.paramKey] =
Page(page) Page(page)
} }

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.searchTerm
import de.pheerai.rcdbquery.dataMappings.internal.ParamKey import de.pheerai.rcdbquery.dataMappings.internal.ParamKey
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
class SearchTerm(override val paramValue: String) : internal class SearchTerm(override val paramValue: String) :
RcdbParamOption<String> { RcdbParamOption<String> {
override val prettyName = "Search Term" override val prettyName = "Search Term"
override val fullName = "Search for elements whose name contain this term" override val fullName = "Search for elements whose name contain this term"

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.searchTerm
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.searchTerm(term: String) = also { internal fun ParamsCollector.searchTerm(term: String) = also {
it[SearchTerm.paramKey] = listOf( it[SearchTerm.paramKey] = listOf(
SearchTerm(term) SearchTerm(term)
) )

View file

@ -4,7 +4,7 @@ import de.pheerai.rcdbquery.dataMappings.internal.ParamKey
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
@Suppress("unused") @Suppress("unused")
enum class SearchType( internal enum class SearchType(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,6 +2,6 @@ package de.pheerai.rcdbquery.dataMappings.searchType
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.searchType(searchType: SearchType) = also { internal fun ParamsCollector.searchType(searchType: SearchType) = also {
it[SearchType.paramKey] = searchType it[SearchType.paramKey] = searchType
} }

View file

@ -5,7 +5,7 @@ package de.pheerai.rcdbquery.dataMappings.startsWith
import de.pheerai.rcdbquery.dataMappings.internal.ParamKey import de.pheerai.rcdbquery.dataMappings.internal.ParamKey
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
class StartsWith(override val paramValue: String) : internal class StartsWith(override val paramValue: String) :
RcdbParamOption<String> { RcdbParamOption<String> {
override val prettyName = "Starts with" override val prettyName = "Starts with"
override val fullName = "Name starting with term" override val fullName = "Name starting with term"

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.startsWith
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.startsWith(term: String) = also { internal fun ParamsCollector.startsWith(term: String) = also {
this[StartsWith.paramKey] = this[StartsWith.paramKey] =
StartsWith(term) StartsWith(term)
} }

View file

@ -4,7 +4,7 @@ import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
@Suppress("unused") @Suppress("unused")
enum class Status( internal enum class Status(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.status
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class StatusBuilder : MultiParamBuilder<Long, Status>() { internal class StatusBuilder : MultiParamBuilder<Long, Status>() {
override fun add(param: Status): StatusBuilder { override fun add(param: Status): StatusBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.status
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.status(body: StatusBuilder.() -> StatusBuilder): ParamsCollector { private fun ParamsCollector.status(body: StatusBuilder.() -> StatusBuilder): ParamsCollector {
val builder = StatusBuilder() val builder = StatusBuilder()
builder.body() builder.body()
this[Status.paramKey] = builder.build() this[Status.paramKey] = builder.build()

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.thrill
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
enum class Thrill( internal enum class Thrill(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.thrill
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class ThrillBuilder : MultiParamBuilder<Long, Thrill>() { internal class ThrillBuilder : MultiParamBuilder<Long, Thrill>() {
override fun add(param: Thrill): ThrillBuilder { override fun add(param: Thrill): ThrillBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.thrill
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.thrill(body: ThrillBuilder.() -> ThrillBuilder): ParamsCollector { private fun ParamsCollector.thrill(body: ThrillBuilder.() -> ThrillBuilder): ParamsCollector {
val builder = ThrillBuilder() val builder = ThrillBuilder()
builder.body() builder.body()
this[Thrill.paramKey] = builder.build() this[Thrill.paramKey] = builder.build()

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.type
import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
enum class Type( internal enum class Type(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long override val paramValue: Long

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.type
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class TypeBuilder : MultiParamBuilder<Long, Type>() { internal class TypeBuilder : MultiParamBuilder<Long, Type>() {
override fun add(param: Type): TypeBuilder { override fun add(param: Type): TypeBuilder {
super.add(param) super.add(param)
return this return this

View file

@ -2,7 +2,7 @@ package de.pheerai.rcdbquery.dataMappings.type
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
fun ParamsCollector.type(body: TypeBuilder.() -> TypeBuilder): ParamsCollector { private fun ParamsCollector.type(body: TypeBuilder.() -> TypeBuilder): ParamsCollector {
val builder = TypeBuilder() val builder = TypeBuilder()
builder.body() builder.body()
this[Type.paramKey] = builder.build() this[Type.paramKey] = builder.build()

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings
import de.pheerai.rcdbquery.dataMappings.order.Order import de.pheerai.rcdbquery.dataMappings.order.Order
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
const val EXTRA_COLUMNS_ERROR_MESSAGE = public const val EXTRA_COLUMNS_ERROR_MESSAGE: String =
"The parameter for extra columns has not yet been discovered (if it even exists). Use multiple values in the `sortBy` param instead (first values take sorting precedence)" "The parameter for extra columns has not yet been discovered (if it even exists). Use multiple values in the `sortBy` param instead (first values take sorting precedence)"
@Suppress("unused") @Suppress("unused")
@ -11,7 +11,7 @@ const val EXTRA_COLUMNS_ERROR_MESSAGE =
EXTRA_COLUMNS_ERROR_MESSAGE, EXTRA_COLUMNS_ERROR_MESSAGE,
ReplaceWith("sortBy"), DeprecationLevel.ERROR ReplaceWith("sortBy"), DeprecationLevel.ERROR
) )
fun ParamsCollector.extraColumns(orders: List<Order>): Nothing = internal fun ParamsCollector.extraColumns(orders: List<Order>): Nothing =
error(EXTRA_COLUMNS_ERROR_MESSAGE) error(EXTRA_COLUMNS_ERROR_MESSAGE)
@Suppress("unused") @Suppress("unused")
@ -19,5 +19,5 @@ fun ParamsCollector.extraColumns(orders: List<Order>): Nothing =
EXTRA_COLUMNS_ERROR_MESSAGE, EXTRA_COLUMNS_ERROR_MESSAGE,
ReplaceWith("sortBy"), DeprecationLevel.ERROR ReplaceWith("sortBy"), DeprecationLevel.ERROR
) )
fun ParamsCollector.extraColumns(vararg orders: Order): Nothing = internal fun ParamsCollector.extraColumns(vararg orders: Order): Nothing =
error(EXTRA_COLUMNS_ERROR_MESSAGE) error(EXTRA_COLUMNS_ERROR_MESSAGE)

View file

@ -5,7 +5,7 @@ import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable import de.pheerai.rcdbquery.dataMappings.internal.StringGeneratable
@Suppress("unused") @Suppress("unused")
enum class Vendor( internal enum class Vendor(
override val prettyName: String, override val prettyName: String,
override val fullName: String, override val fullName: String,
override val paramValue: Long, override val paramValue: Long,

View file

@ -2,11 +2,11 @@ package de.pheerai.rcdbquery.dataMappings.vendor
import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder import de.pheerai.rcdbquery.dataMappings.internal.MultiParamBuilder
class VendorBuilder : MultiParamBuilder<Long, Vendor>() { internal class VendorBuilder : MultiParamBuilder<Long, Vendor>() {
override fun add(param: Vendor): VendorBuilder { override fun add(param: Vendor): VendorBuilder {
super.add(param) super.add(param)
return this return this
} }
override fun Vendor.invoke() = add(this) override operator fun Vendor.invoke() = add(this)
} }

View file

@ -3,7 +3,7 @@ package de.pheerai.rcdbquery.dataMappings.vendor
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
// TODO: Try to generify. This is currently lacking some sort of "This interface requires a companion implementing that interface" // TODO: Try to generify. This is currently lacking some sort of "This interface requires a companion implementing that interface"
fun ParamsCollector.vendors(body: VendorBuilder.() -> VendorBuilder): ParamsCollector { internal fun ParamsCollector.vendors(body: VendorBuilder.() -> VendorBuilder): ParamsCollector {
val builder = VendorBuilder() val builder = VendorBuilder()
builder.body() builder.body()
this[Vendor.paramKey] = builder.build() this[Vendor.paramKey] = builder.build()

View file

@ -4,7 +4,7 @@ import de.pheerai.rcdbquery.dataMappings.internal.RcdbParamOption
import de.pheerai.rcdbquery.dataMappings.searchType.SearchType import de.pheerai.rcdbquery.dataMappings.searchType.SearchType
import de.pheerai.rcdbquery.dsl.RcdbParams import de.pheerai.rcdbquery.dsl.RcdbParams
class ParamsCollector { internal class ParamsCollector {
private val multiParams: MutableMap<String, List<RcdbParamOption<Any>>> = mutableMapOf() private val multiParams: MutableMap<String, List<RcdbParamOption<Any>>> = mutableMapOf()
private val singleParams: MutableMap<String, RcdbParamOption<Any>> = mutableMapOf() private val singleParams: MutableMap<String, RcdbParamOption<Any>> = mutableMapOf()

View file

@ -1,8 +1,8 @@
package de.pheerai.rcdbquery.dsl.params package de.pheerai.rcdbquery.dsl.params
sealed class BaseParams<T> { internal sealed class BaseParams<T> {
abstract val params: Map<String, T> abstract val params: Map<String, T>
} }
class MultiParams(override val params: Map<String, List<String>>) : BaseParams<List<String>>() internal class MultiParams(override val params: Map<String, List<String>>) : BaseParams<List<String>>()
class SingleParams(override val params: Map<String, String>) : BaseParams<String>() internal class SingleParams(override val params: Map<String, String>) : BaseParams<String>()

View file

@ -1,3 +1,3 @@
package de.pheerai.rcdbquery.dsl.params package de.pheerai.rcdbquery.dsl.params
class ParamAlreadySetException(message: String) : IllegalArgumentException(message) internal class ParamAlreadySetException(message: String) : IllegalArgumentException(message)

View file

@ -4,7 +4,7 @@ import de.pheerai.rcdbquery.dsl.params.MultiParams
import de.pheerai.rcdbquery.dsl.params.ParamsCollector import de.pheerai.rcdbquery.dsl.params.ParamsCollector
import de.pheerai.rcdbquery.dsl.params.SingleParams import de.pheerai.rcdbquery.dsl.params.SingleParams
data class RcdbParams( internal data class RcdbParams(
val multiParams: MultiParams, val multiParams: MultiParams,
val singleParams: SingleParams, val singleParams: SingleParams,
) { ) {
@ -24,10 +24,10 @@ data class RcdbParams(
} }
} }
fun rcdbQuery(body: ParamsCollector.() -> ParamsCollector) = internal fun rcdbQuery(body: ParamsCollector.() -> ParamsCollector) =
RcdbUrlQuery("https://www.rcdb.com/r.htm?", rcdbQueryParams(body)).toString() RcdbUrlQuery("https://www.rcdb.com/r.htm?", rcdbQueryParams(body)).toString()
data class RcdbUrlQuery(val baseUrl: String, val params: RcdbParams) { private data class RcdbUrlQuery(val baseUrl: String, val params: RcdbParams) {
override fun toString(): String { override fun toString(): String {
return params.toStrings() return params.toStrings()
.joinToString(prefix = baseUrl, separator = "&") .joinToString(prefix = baseUrl, separator = "&")
@ -37,7 +37,7 @@ data class RcdbUrlQuery(val baseUrl: String, val params: RcdbParams) {
/** /**
* Builder for the parameters only (mainly because it might be possilbe in the future to have an API with a POST search object? * Builder for the parameters only (mainly because it might be possilbe in the future to have an API with a POST search object?
*/ */
fun rcdbQueryParams(body: ParamsCollector.() -> ParamsCollector): RcdbParams { private fun rcdbQueryParams(body: ParamsCollector.() -> ParamsCollector): RcdbParams {
val builder = ParamsCollector() val builder = ParamsCollector()
builder.body() builder.body()
return builder.build() return builder.build()

View file

@ -1,6 +1,7 @@
module rcdbquery.main { module rcdbquery.main {
exports de.pheerai.rcdbquery.dataMappings.category; exports de.pheerai.rcdbquery.dataMappings.category;
exports de.pheerai.rcdbquery.dataMappings.classification; exports de.pheerai.rcdbquery.dataMappings.classification;
exports de.pheerai.rcdbquery.dataMappings;
exports de.pheerai.rcdbquery.dataMappings.design; exports de.pheerai.rcdbquery.dataMappings.design;
exports de.pheerai.rcdbquery.dataMappings.layout; exports de.pheerai.rcdbquery.dataMappings.layout;
exports de.pheerai.rcdbquery.dataMappings.order; exports de.pheerai.rcdbquery.dataMappings.order;
@ -16,4 +17,5 @@ module rcdbquery.main {
exports de.pheerai.rcdbquery.dsl.params; exports de.pheerai.rcdbquery.dsl.params;
requires kotlin.stdlib; requires kotlin.stdlib;
requires java.base;
} }