mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-04 06:00:22 +00:00 
			
		
		
		
	add kv swagger template
This commit is contained in:
		@@ -5,6 +5,7 @@ import dev.inmo.micro_utils.pagination.*
 | 
				
			|||||||
import dev.inmo.micro_utils.repos.ReadKeyValueRepo
 | 
					import dev.inmo.micro_utils.repos.ReadKeyValueRepo
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.*
 | 
					import dev.inmo.micro_utils.repos.ktor.common.*
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.containsRoute
 | 
					import dev.inmo.micro_utils.repos.ktor.common.containsRoute
 | 
				
			||||||
 | 
					import dev.inmo.micro_utils.repos.ktor.common.keyParameterName
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.*
 | 
					import dev.inmo.micro_utils.repos.ktor.common.key_value.*
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName
 | 
					import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName
 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					import io.ktor.client.HttpClient
 | 
				
			||||||
@@ -30,7 +31,7 @@ class KtorReadKeyValueRepoClient<Key, Value>(
 | 
				
			|||||||
            baseUrl,
 | 
					            baseUrl,
 | 
				
			||||||
            getRoute,
 | 
					            getRoute,
 | 
				
			||||||
            mapOf(
 | 
					            mapOf(
 | 
				
			||||||
                idParameterName to idSerializer(k)
 | 
					                keyParameterName to idSerializer(k)
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
@@ -41,7 +42,7 @@ class KtorReadKeyValueRepoClient<Key, Value>(
 | 
				
			|||||||
        buildStandardUrl(
 | 
					        buildStandardUrl(
 | 
				
			||||||
            baseUrl,
 | 
					            baseUrl,
 | 
				
			||||||
            containsRoute,
 | 
					            containsRoute,
 | 
				
			||||||
            idParameterName to idSerializer(key)
 | 
					            keyParameterName to idSerializer(key)
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        contentType(contentType)
 | 
					        contentType(contentType)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,15 +79,6 @@ definitions:
 | 
				
			|||||||
    type: array
 | 
					    type: array
 | 
				
			||||||
    items:
 | 
					    items:
 | 
				
			||||||
      $ref: "#/definitions/NewValue"
 | 
					      $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:
 | 
					  PaginationResult:
 | 
				
			||||||
    type: object
 | 
					    type: object
 | 
				
			||||||
    properties:
 | 
					    properties:
 | 
				
			||||||
@@ -116,7 +107,7 @@ paths:
 | 
				
			|||||||
        - $ref: "#/parameters/PaginationInQuerySize"
 | 
					        - $ref: "#/parameters/PaginationInQuerySize"
 | 
				
			||||||
      responses:
 | 
					      responses:
 | 
				
			||||||
        "200":
 | 
					        "200":
 | 
				
			||||||
          description: "Pagination of elements"
 | 
					          description: "Pagination with elements"
 | 
				
			||||||
          schema:
 | 
					          schema:
 | 
				
			||||||
            allOf:
 | 
					            allOf:
 | 
				
			||||||
              - $ref: "#/definitions/PaginationResult"
 | 
					              - $ref: "#/definitions/PaginationResult"
 | 
				
			||||||
							
								
								
									
										196
									
								
								repos/ktor/kv.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								repos/ktor/kv.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,196 @@
 | 
				
			|||||||
 | 
					swagger: "2.0"
 | 
				
			||||||
 | 
					info:
 | 
				
			||||||
 | 
					  description: "This is a template for the KeyValue repositories from [microutils](https://github.com/InsanusMokrassar/MicroUtils/tree/master/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value)"
 | 
				
			||||||
 | 
					  version: "0.11.0"
 | 
				
			||||||
 | 
					  title: "KeyValue 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:
 | 
				
			||||||
 | 
					  KeyInQuery:
 | 
				
			||||||
 | 
					    in: "query"
 | 
				
			||||||
 | 
					    name: "key"
 | 
				
			||||||
 | 
					    allOf:
 | 
				
			||||||
 | 
					      - $ref: "#/definitions/Key"
 | 
				
			||||||
 | 
					  KeysInBody:
 | 
				
			||||||
 | 
					    in: "body"
 | 
				
			||||||
 | 
					    name: "body"
 | 
				
			||||||
 | 
					    type: array
 | 
				
			||||||
 | 
					    items:
 | 
				
			||||||
 | 
					      $ref: "#/definitions/Key"
 | 
				
			||||||
 | 
					  ValuesInBody:
 | 
				
			||||||
 | 
					    in: "body"
 | 
				
			||||||
 | 
					    name: "body"
 | 
				
			||||||
 | 
					    type: array
 | 
				
			||||||
 | 
					    items:
 | 
				
			||||||
 | 
					      $ref: "#/definitions/Value"
 | 
				
			||||||
 | 
					  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
 | 
				
			||||||
 | 
					  ReversedInQuery:
 | 
				
			||||||
 | 
					    in: "query"
 | 
				
			||||||
 | 
					    type: boolean
 | 
				
			||||||
 | 
					    name: "reversed"
 | 
				
			||||||
 | 
					    description: "If passed, will tell to reverse the result pages"
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					  ValueInQuery:
 | 
				
			||||||
 | 
					    in: "query"
 | 
				
			||||||
 | 
					    name: "value"
 | 
				
			||||||
 | 
					    allOf:
 | 
				
			||||||
 | 
					      - $ref: "#/definitions/Value"
 | 
				
			||||||
 | 
					  MapInBody:
 | 
				
			||||||
 | 
					    in: "body"
 | 
				
			||||||
 | 
					    name: "body"
 | 
				
			||||||
 | 
					    allOf:
 | 
				
			||||||
 | 
					      - $ref: "#/definitions/Map"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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"
 | 
				
			||||||
 | 
					  Map:
 | 
				
			||||||
 | 
					    type: object
 | 
				
			||||||
 | 
					    description: "Map of objects"
 | 
				
			||||||
 | 
					  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:
 | 
				
			||||||
 | 
					  /get:
 | 
				
			||||||
 | 
					    get:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Read"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/KeyInQuery"
 | 
				
			||||||
 | 
					          required: true
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: "Element by key"
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: "#/definitions/Value"
 | 
				
			||||||
 | 
					        "204":
 | 
				
			||||||
 | 
					          description: "No value by id"
 | 
				
			||||||
 | 
					  /values:
 | 
				
			||||||
 | 
					    get:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Read"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/PaginationInQueryPage"
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/PaginationInQuerySize"
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/ReversedInQuery"
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: "Pagination with elements"
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            allOf:
 | 
				
			||||||
 | 
					              - $ref: "#/definitions/PaginationResult"
 | 
				
			||||||
 | 
					              - properties:
 | 
				
			||||||
 | 
					                  results:
 | 
				
			||||||
 | 
					                    items:
 | 
				
			||||||
 | 
					                      $ref: "#/definitions/Value"
 | 
				
			||||||
 | 
					  /keys:
 | 
				
			||||||
 | 
					    get:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Read"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/PaginationInQueryPage"
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/PaginationInQuerySize"
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/ReversedInQuery"
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/ValueInQuery"
 | 
				
			||||||
 | 
					          required: false
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: "Pagination with elements"
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            allOf:
 | 
				
			||||||
 | 
					              - $ref: "#/definitions/PaginationResult"
 | 
				
			||||||
 | 
					              - properties:
 | 
				
			||||||
 | 
					                  results:
 | 
				
			||||||
 | 
					                    items:
 | 
				
			||||||
 | 
					                      $ref: "#/definitions/Key"
 | 
				
			||||||
 | 
					  /contains:
 | 
				
			||||||
 | 
					    get:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Read"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/KeyInQuery"
 | 
				
			||||||
 | 
					          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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /set:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Write"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - allOf:
 | 
				
			||||||
 | 
					            - $ref: "#/parameters/MapInBody"
 | 
				
			||||||
 | 
					            - additionalProperties:
 | 
				
			||||||
 | 
					                $ref: "#/definitions/Value"
 | 
				
			||||||
 | 
					              description: "Map with new elements to set. Use keys as a keys of this map"
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: "Will return 200 if everything has been completed ok"
 | 
				
			||||||
 | 
					  /unset:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Write"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/KeysInBody"
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: "Objects with keys from body has been unset"
 | 
				
			||||||
 | 
					  /unsetWithValues:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					        - "Write"
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					        - $ref: "#/parameters/ValuesInBody"
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: "Objects with values from body has been unset"
 | 
				
			||||||
@@ -8,6 +8,7 @@ import dev.inmo.micro_utils.repos.ReadKeyValueRepo
 | 
				
			|||||||
import dev.inmo.micro_utils.repos.ktor.common.*
 | 
					import dev.inmo.micro_utils.repos.ktor.common.*
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.containsRoute
 | 
					import dev.inmo.micro_utils.repos.ktor.common.containsRoute
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.countRoute
 | 
					import dev.inmo.micro_utils.repos.ktor.common.countRoute
 | 
				
			||||||
 | 
					import dev.inmo.micro_utils.repos.ktor.common.keyParameterName
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.*
 | 
					import dev.inmo.micro_utils.repos.ktor.common.key_value.*
 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName
 | 
					import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName
 | 
				
			||||||
import io.ktor.http.*
 | 
					import io.ktor.http.*
 | 
				
			||||||
@@ -30,7 +31,7 @@ inline fun <reified Key, reified Value> Route.configureReadKeyValueRepoRoutes (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    get(getRoute) {
 | 
					    get(getRoute) {
 | 
				
			||||||
        val key = idDeserializer(
 | 
					        val key = idDeserializer(
 | 
				
			||||||
            call.getQueryParameterOrSendError(idParameterName) ?: return@get
 | 
					            call.getQueryParameterOrSendError(keyParameterName) ?: return@get
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        originalRepo.get(key) ?.let {
 | 
					        originalRepo.get(key) ?.let {
 | 
				
			||||||
@@ -63,7 +64,7 @@ inline fun <reified Key, reified Value> Route.configureReadKeyValueRepoRoutes (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    get(containsRoute) {
 | 
					    get(containsRoute) {
 | 
				
			||||||
        val key = idDeserializer(
 | 
					        val key = idDeserializer(
 | 
				
			||||||
            call.getQueryParameterOrSendError(idParameterName) ?: return@get
 | 
					            call.getQueryParameterOrSendError(keyParameterName) ?: return@get
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        call.respond(originalRepo.contains(key))
 | 
					        call.respond(originalRepo.contains(key))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user