mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-22 16:23:50 +00:00
add mimetypes
This commit is contained in:
parent
6f46413a90
commit
56fd480542
6
mime_types/build.gradle
Normal file
6
mime_types/build.gradle
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
plugins {
|
||||||
|
id "org.jetbrains.kotlin.multiplatform"
|
||||||
|
id "org.jetbrains.kotlin.plugin.serialization"
|
||||||
|
}
|
||||||
|
|
||||||
|
apply from: "$mppProjectWithSerializationPresetPath"
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@
|
|||||||
|
package dev.inmo.micro_utils.mime_types
|
||||||
|
|
||||||
|
import kotlinx.serialization.KSerializer
|
||||||
|
import kotlinx.serialization.Serializer
|
||||||
|
import kotlinx.serialization.descriptors.*
|
||||||
|
import kotlinx.serialization.encoding.Decoder
|
||||||
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
|
||||||
|
private val mimesCache = mutableMapOf<String, MimeType>().also {
|
||||||
|
knownMimeTypes.forEach { mimeType -> it[mimeType.raw] = mimeType }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mimeType(raw: String) = mimesCache.getOrPut(raw) {
|
||||||
|
parseMimeType(raw)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun parseMimeType(raw: String): MimeType = CustomMimeType(raw)
|
||||||
|
|
||||||
|
@Serializer(MimeType::class)
|
||||||
|
object MimeTypeSerializer : KSerializer<MimeType> {
|
||||||
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("mimeType", PrimitiveKind.STRING)
|
||||||
|
|
||||||
|
override fun deserialize(decoder: Decoder): MimeType {
|
||||||
|
val mimeType = decoder.decodeString()
|
||||||
|
return mimeType(mimeType)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun serialize(encoder: Encoder, value: MimeType) {
|
||||||
|
encoder.encodeString(value.raw)
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,3 @@
|
|||||||
package dev.inmo.micro_utils.repos
|
package dev.inmo.micro_utils.repos
|
||||||
|
|
||||||
interface Repo {
|
interface Repo
|
||||||
}
|
|
||||||
|
@ -4,10 +4,10 @@ import kotlinx.coroutines.channels.Channel
|
|||||||
|
|
||||||
abstract class AbstractExposedCRUDRepo<ObjectType, IdType, InputValueType>(
|
abstract class AbstractExposedCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||||
flowsChannelsSize: Int = Channel.BUFFERED,
|
flowsChannelsSize: Int = Channel.BUFFERED,
|
||||||
databaseName: String = ""
|
tableName: String = ""
|
||||||
) :
|
) :
|
||||||
AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||||
flowsChannelsSize,
|
flowsChannelsSize,
|
||||||
databaseName
|
tableName
|
||||||
),
|
),
|
||||||
ExposedCRUDRepo<ObjectType, IdType>
|
ExposedCRUDRepo<ObjectType, IdType>
|
||||||
|
@ -12,9 +12,9 @@ import org.jetbrains.exposed.sql.transactions.transaction
|
|||||||
|
|
||||||
abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||||
flowsChannelsSize: Int = 64,
|
flowsChannelsSize: Int = 64,
|
||||||
databaseName: String = ""
|
tableName: String = ""
|
||||||
) :
|
) :
|
||||||
AbstractExposedReadCRUDRepo<ObjectType, IdType>(databaseName),
|
AbstractExposedReadCRUDRepo<ObjectType, IdType>(tableName),
|
||||||
ExposedCRUDRepo<ObjectType, IdType>,
|
ExposedCRUDRepo<ObjectType, IdType>,
|
||||||
WriteStandardCRUDRepo<ObjectType, IdType, InputValueType>
|
WriteStandardCRUDRepo<ObjectType, IdType, InputValueType>
|
||||||
{
|
{
|
||||||
@ -102,4 +102,4 @@ abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package dev.inmo.micro_utils.repos.exposed
|
package dev.inmo.micro_utils.repos.exposed
|
||||||
|
|
||||||
|
import dev.inmo.micro_utils.repos.Repo
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
|
|
||||||
interface ExposedCRUDRepo<ObjectType, IdType> {
|
interface ExposedCRUDRepo<ObjectType, IdType> : Repo {
|
||||||
val database: Database
|
val database: Database
|
||||||
|
|
||||||
val ResultRow.asObject: ObjectType
|
val ResultRow.asObject: ObjectType
|
||||||
|
@ -5,6 +5,7 @@ String[] includes = [
|
|||||||
":pagination:exposed",
|
":pagination:exposed",
|
||||||
":pagination:ktor:common",
|
":pagination:ktor:common",
|
||||||
":pagination:ktor:server",
|
":pagination:ktor:server",
|
||||||
|
":mime_types",
|
||||||
":repos:common",
|
":repos:common",
|
||||||
":repos:exposed",
|
":repos:exposed",
|
||||||
":repos:ktor:client",
|
":repos:ktor:client",
|
||||||
|
Loading…
Reference in New Issue
Block a user