diff --git a/repos/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/repos/ktor/client/crud/KtorWriteCrudRepoClient.kt b/repos/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/repos/ktor/client/crud/KtorWriteCrudRepoClient.kt index c28e553f629..76270d80271 100644 --- a/repos/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/repos/ktor/client/crud/KtorWriteCrudRepoClient.kt +++ b/repos/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/repos/ktor/client/crud/KtorWriteCrudRepoClient.kt @@ -34,7 +34,7 @@ class KtorWriteCrudRepoClient ( override suspend fun update( values: List> ): List = httpClient.post( - buildStandardUrl(baseUrl, updateManyRouting) + buildStandardUrl(baseUrl, updateRouting) ) { updateSetup(values) }.updateBodyGetter() diff --git a/repos/ktor/server/src/crud.yml b/repos/ktor/server/src/crud.yml new file mode 100644 index 00000000000..e5544211a6a --- /dev/null +++ b/repos/ktor/server/src/crud.yml @@ -0,0 +1,196 @@ +swagger: "2.0" +info: + description: "This is a template for the CRUD repositories from [microutils](https://github.com/InsanusMokrassar/MicroUtils/tree/master/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud)" + version: "0.11.0" + title: "CRUD Repo" + contact: + email: "ovsyannikov.alexey95@gmail.com" +tags: + - name: "Read" + description: "Operations with `get` request in most cases" + - name: "Write" + description: "Operations with `post` request in most cases" + +parameters: + IdInQuery: + in: "query" + name: "id" + allOf: + - $ref: "#/definitions/Key" + IdsInBody: + in: "body" + name: "body" + type: array + items: + $ref: "#/definitions/Key" + NewValuesInBody: + in: "body" + name: "body" + type: array + allOf: + - $ref: "#/definitions/NewValues" + NewValuesWithIdsInBody: + in: "body" + name: "body" + type: array + items: + allOf: + - $ref: "#/definitions/Pair" + - properties: + first: + $ref: "#/definitions/Key" + second: + $ref: "#/definitions/NewValue" + PaginationInQueryPage: + in: "query" + type: integer + name: "ppage" + description: "Page of pagination" + required: false + PaginationInQuerySize: + in: "query" + type: integer + name: "psize" + description: "Size of each page in pagination" + required: false + + +definitions: + Key: + type: integer + description: "REWRITE THIS TYPE AS KEY IN SWAGGER FILE" + Value: + type: integer + description: "REWRITE THIS TYPE AS VALUE IN SWAGGER FILE" + Values: + type: array + items: + $ref: "#/definitions/Value" + NewValue: + type: integer + description: "REWRITE THIS TYPE AS NEW VALUE IN SWAGGER FILE" + Pair: + type: object + description: "Pair of objects" + properties: + first: + second: + NewValues: + type: array + items: + $ref: "#/definitions/NewValue" + Pagination: + type: object + properties: + page: + type: integer + description: "Page of pagination" + size: + type: integer + description: "Size of each page in pagination" + PaginationResult: + type: object + properties: + page: + type: integer + description: "Page of pagination" + pagesNumber: + type: integer + description: "Count of pages with the size from this pagination" + size: + type: integer + description: "Size of each page in pagination" + results: + type: array + description: "Array of all elements on that page. Size of pagination and size of array can be different and it can be interpreted like current page is the last one" + items: + type: object + +paths: + /getByPagination: + get: + tags: + - "Read" + parameters: + - $ref: "#/parameters/PaginationInQueryPage" + - $ref: "#/parameters/PaginationInQuerySize" + responses: + "200": + description: "Pagination of elements" + schema: + allOf: + - $ref: "#/definitions/PaginationResult" + - properties: + results: + items: + $ref: "#/definitions/Value" + /getById: + get: + tags: + - "Read" + parameters: + - $ref: "#/parameters/IdInQuery" + required: true + responses: + "200": + description: "Result object" + schema: + $ref: "#/definitions/Value" + "204": + description: "No value by id" + /contains: + get: + tags: + - "Read" + parameters: + - $ref: "#/parameters/IdInQuery" + required: true + responses: + "200": + description: "Object with id availability in repo" + schema: + type: boolean + /count: + get: + tags: + - "Read" + responses: + "200": + description: "Amount of objects in repo" + schema: + type: integer + + + /create: + post: + tags: + - "Write" + parameters: + - $ref: "#/parameters/NewValuesInBody" + responses: + "200": + description: "Objects has been created and saved" + schema: + $ref: "#/definitions/Values" + /update: + post: + tags: + - "Write" + parameters: + - $ref: "#/parameters/NewValuesWithIdsInBody" + responses: + "200": + description: "Objects has been updated" + schema: + $ref: "#/definitions/Values" + /deleteById: + post: + tags: + - "Write" + parameters: + - $ref: "#/parameters/IdsInBody" + responses: + "200": + description: "Objects has been updated" + schema: + $ref: "#/definitions/Values" diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt index 7a05ea287ca..368f928d141 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt @@ -3,6 +3,7 @@ package dev.inmo.micro_utils.repos.ktor.server.crud import dev.inmo.micro_utils.ktor.server.* import dev.inmo.micro_utils.repos.WriteCRUDRepo import dev.inmo.micro_utils.repos.ktor.common.crud.* +import io.ktor.http.HttpStatusCode import io.ktor.server.application.call import io.ktor.server.request.receive import io.ktor.server.response.respond @@ -29,11 +30,12 @@ inline fun