作者 yangfu

增加 graphql latency resolver (roles)

  1 +{
  2 + "swagger": "2.0",
  3 + "info": {
  4 + "title": "",
  5 + "description": "开发工具平台",
  6 + "contact": {
  7 + "name": "tiptok",
  8 + "email": "785409885@qq.com",
  9 + "home": ""
  10 + },
  11 + "version": "0.0.1"
  12 + },
  13 + "consumes": [
  14 + "application/json",
  15 + "application/xml"
  16 + ],
  17 + "produces": [
  18 + "application/json",
  19 + "application/xml"
  20 + ],
  21 + "paths": {
  22 + "/auth/login": {
  23 + "post": {
  24 + "tags": [
  25 + "auth"
  26 + ],
  27 + "summary": "登录",
  28 + "description": "登录",
  29 + "operationId": "auth#login",
  30 + "parameters": [
  31 + {
  32 + "name": "LoginRequestBody",
  33 + "in": "body",
  34 + "required": true,
  35 + "schema": {
  36 + "$ref": "#/definitions/AuthLoginRequestBody"
  37 + }
  38 + }
  39 + ],
  40 + "responses": {
  41 + "200": {
  42 + "description": "OK response.",
  43 + "schema": {
  44 + "$ref": "#/definitions/AuthLoginResponseBody"
  45 + }
  46 + }
  47 + },
  48 + "schemes": [
  49 + "http"
  50 + ]
  51 + }
  52 + },
  53 + "/auth/profile": {
  54 + "post": {
  55 + "tags": [
  56 + "auth"
  57 + ],
  58 + "summary": "获得当前用户数据",
  59 + "description": "获得当前用户数据",
  60 + "operationId": "auth#profile",
  61 + "parameters": [
  62 + {
  63 + "name": "ProfileRequestBody",
  64 + "in": "body",
  65 + "required": true,
  66 + "schema": {
  67 + "$ref": "#/definitions/AuthProfileRequestBody"
  68 + }
  69 + }
  70 + ],
  71 + "responses": {
  72 + "200": {
  73 + "description": "OK response.",
  74 + "schema": {
  75 + "$ref": "#/definitions/AuthProfileResponseBody"
  76 + }
  77 + }
  78 + },
  79 + "schemes": [
  80 + "http"
  81 + ]
  82 + }
  83 + },
  84 + "/auth/refresh": {
  85 + "post": {
  86 + "tags": [
  87 + "auth"
  88 + ],
  89 + "summary": "刷新权限",
  90 + "description": "刷新权限",
  91 + "operationId": "auth#refresh",
  92 + "parameters": [
  93 + {
  94 + "name": "RefreshRequestBody",
  95 + "in": "body",
  96 + "required": true,
  97 + "schema": {
  98 + "$ref": "#/definitions/AuthRefreshRequestBody"
  99 + }
  100 + }
  101 + ],
  102 + "responses": {
  103 + "200": {
  104 + "description": "OK response.",
  105 + "schema": {
  106 + "$ref": "#/definitions/AuthRefreshResponseBody"
  107 + }
  108 + }
  109 + },
  110 + "schemes": [
  111 + "http"
  112 + ]
  113 + }
  114 + },
  115 + "/roles": {
  116 + "get": {
  117 + "tags": [
  118 + "role"
  119 + ],
  120 + "summary": "返回列表",
  121 + "description": "返回列表",
  122 + "operationId": "role#listRole",
  123 + "parameters": [
  124 + {
  125 + "name": "offset",
  126 + "in": "query",
  127 + "description": "查询偏离量",
  128 + "required": false,
  129 + "type": "integer"
  130 + },
  131 + {
  132 + "name": "limit",
  133 + "in": "query",
  134 + "description": "查询限制",
  135 + "required": false,
  136 + "type": "integer"
  137 + }
  138 + ],
  139 + "responses": {
  140 + "200": {
  141 + "description": "OK response.",
  142 + "schema": {
  143 + "$ref": "#/definitions/RoleListRoleResponseBody"
  144 + }
  145 + }
  146 + },
  147 + "schemes": [
  148 + "http"
  149 + ]
  150 + },
  151 + "post": {
  152 + "tags": [
  153 + "role"
  154 + ],
  155 + "summary": "创建",
  156 + "description": "创建",
  157 + "operationId": "role#createRole",
  158 + "parameters": [
  159 + {
  160 + "name": "CreateRoleRequestBody",
  161 + "in": "body",
  162 + "required": true,
  163 + "schema": {
  164 + "$ref": "#/definitions/RoleCreateRoleRequestBody"
  165 + }
  166 + }
  167 + ],
  168 + "responses": {
  169 + "200": {
  170 + "description": "OK response.",
  171 + "schema": {
  172 + "$ref": "#/definitions/RoleCreateRoleResponseBody"
  173 + }
  174 + }
  175 + },
  176 + "schemes": [
  177 + "http"
  178 + ]
  179 + }
  180 + },
  181 + "/roles/{Id}": {
  182 + "get": {
  183 + "tags": [
  184 + "role"
  185 + ],
  186 + "summary": "返回",
  187 + "description": "返回",
  188 + "operationId": "role#getRole",
  189 + "parameters": [
  190 + {
  191 + "name": "Id",
  192 + "in": "path",
  193 + "required": true,
  194 + "type": "string"
  195 + },
  196 + {
  197 + "name": "GetRoleRequestBody",
  198 + "in": "body",
  199 + "required": true,
  200 + "schema": {
  201 + "$ref": "#/definitions/RoleGetRoleRequestBody"
  202 + }
  203 + }
  204 + ],
  205 + "responses": {
  206 + "200": {
  207 + "description": "OK response.",
  208 + "schema": {
  209 + "$ref": "#/definitions/RoleGetRoleResponseBody"
  210 + }
  211 + }
  212 + },
  213 + "schemes": [
  214 + "http"
  215 + ]
  216 + },
  217 + "put": {
  218 + "tags": [
  219 + "role"
  220 + ],
  221 + "summary": "更新",
  222 + "description": "更新",
  223 + "operationId": "role#updateRole",
  224 + "parameters": [
  225 + {
  226 + "name": "Id",
  227 + "in": "path",
  228 + "required": true,
  229 + "type": "string"
  230 + },
  231 + {
  232 + "name": "UpdateRoleRequestBody",
  233 + "in": "body",
  234 + "required": true,
  235 + "schema": {
  236 + "$ref": "#/definitions/RoleUpdateRoleRequestBody"
  237 + }
  238 + }
  239 + ],
  240 + "responses": {
  241 + "200": {
  242 + "description": "OK response.",
  243 + "schema": {
  244 + "$ref": "#/definitions/RoleUpdateRoleResponseBody"
  245 + }
  246 + }
  247 + },
  248 + "schemes": [
  249 + "http"
  250 + ]
  251 + },
  252 + "delete": {
  253 + "tags": [
  254 + "role"
  255 + ],
  256 + "summary": "移除",
  257 + "description": "移除",
  258 + "operationId": "role#removeRole",
  259 + "parameters": [
  260 + {
  261 + "name": "Id",
  262 + "in": "path",
  263 + "required": true,
  264 + "type": "string"
  265 + },
  266 + {
  267 + "name": "RemoveRoleRequestBody",
  268 + "in": "body",
  269 + "required": true,
  270 + "schema": {
  271 + "$ref": "#/definitions/RoleRemoveRoleRequestBody"
  272 + }
  273 + }
  274 + ],
  275 + "responses": {
  276 + "200": {
  277 + "description": "OK response.",
  278 + "schema": {
  279 + "$ref": "#/definitions/RoleRemoveRoleResponseBody"
  280 + }
  281 + }
  282 + },
  283 + "schemes": [
  284 + "http"
  285 + ]
  286 + }
  287 + },
  288 + "/users": {
  289 + "get": {
  290 + "tags": [
  291 + "users"
  292 + ],
  293 + "summary": "返回列表",
  294 + "description": "返回列表",
  295 + "operationId": "users#listUsers",
  296 + "parameters": [
  297 + {
  298 + "name": "offset",
  299 + "in": "query",
  300 + "description": "查询偏离量",
  301 + "required": false,
  302 + "type": "integer"
  303 + },
  304 + {
  305 + "name": "limit",
  306 + "in": "query",
  307 + "description": "查询限制",
  308 + "required": false,
  309 + "type": "integer"
  310 + }
  311 + ],
  312 + "responses": {
  313 + "200": {
  314 + "description": "OK response.",
  315 + "schema": {
  316 + "$ref": "#/definitions/UsersListUsersResponseBody"
  317 + }
  318 + }
  319 + },
  320 + "schemes": [
  321 + "http"
  322 + ]
  323 + },
  324 + "post": {
  325 + "tags": [
  326 + "users"
  327 + ],
  328 + "summary": "创建",
  329 + "description": "创建",
  330 + "operationId": "users#createUsers",
  331 + "parameters": [
  332 + {
  333 + "name": "CreateUsersRequestBody",
  334 + "in": "body",
  335 + "required": true,
  336 + "schema": {
  337 + "$ref": "#/definitions/UsersCreateUsersRequestBody"
  338 + }
  339 + }
  340 + ],
  341 + "responses": {
  342 + "200": {
  343 + "description": "OK response.",
  344 + "schema": {
  345 + "$ref": "#/definitions/UsersCreateUsersResponseBody"
  346 + }
  347 + }
  348 + },
  349 + "schemes": [
  350 + "http"
  351 + ]
  352 + }
  353 + },
  354 + "/users/{Id}": {
  355 + "get": {
  356 + "tags": [
  357 + "users"
  358 + ],
  359 + "summary": "返回",
  360 + "description": "返回",
  361 + "operationId": "users#getUsers",
  362 + "parameters": [
  363 + {
  364 + "name": "Id",
  365 + "in": "path",
  366 + "required": true,
  367 + "type": "string"
  368 + },
  369 + {
  370 + "name": "GetUsersRequestBody",
  371 + "in": "body",
  372 + "required": true,
  373 + "schema": {
  374 + "$ref": "#/definitions/UsersGetUsersRequestBody"
  375 + }
  376 + }
  377 + ],
  378 + "responses": {
  379 + "200": {
  380 + "description": "OK response.",
  381 + "schema": {
  382 + "$ref": "#/definitions/UsersGetUsersResponseBody"
  383 + }
  384 + }
  385 + },
  386 + "schemes": [
  387 + "http"
  388 + ]
  389 + },
  390 + "put": {
  391 + "tags": [
  392 + "users"
  393 + ],
  394 + "summary": "更新",
  395 + "description": "更新",
  396 + "operationId": "users#updateUsers",
  397 + "parameters": [
  398 + {
  399 + "name": "Id",
  400 + "in": "path",
  401 + "required": true,
  402 + "type": "string"
  403 + },
  404 + {
  405 + "name": "UpdateUsersRequestBody",
  406 + "in": "body",
  407 + "required": true,
  408 + "schema": {
  409 + "$ref": "#/definitions/UsersUpdateUsersRequestBody"
  410 + }
  411 + }
  412 + ],
  413 + "responses": {
  414 + "200": {
  415 + "description": "OK response.",
  416 + "schema": {
  417 + "$ref": "#/definitions/UsersUpdateUsersResponseBody"
  418 + }
  419 + }
  420 + },
  421 + "schemes": [
  422 + "http"
  423 + ]
  424 + },
  425 + "delete": {
  426 + "tags": [
  427 + "users"
  428 + ],
  429 + "summary": "移除",
  430 + "description": "移除",
  431 + "operationId": "users#removeUsers",
  432 + "parameters": [
  433 + {
  434 + "name": "Id",
  435 + "in": "path",
  436 + "required": true,
  437 + "type": "string"
  438 + },
  439 + {
  440 + "name": "RemoveUsersRequestBody",
  441 + "in": "body",
  442 + "required": true,
  443 + "schema": {
  444 + "$ref": "#/definitions/UsersRemoveUsersRequestBody"
  445 + }
  446 + }
  447 + ],
  448 + "responses": {
  449 + "200": {
  450 + "description": "OK response.",
  451 + "schema": {
  452 + "$ref": "#/definitions/UsersRemoveUsersResponseBody"
  453 + }
  454 + }
  455 + },
  456 + "schemes": [
  457 + "http"
  458 + ]
  459 + }
  460 + }
  461 + },
  462 + "definitions": {
  463 + "AuthLoginRequestBody": {
  464 + "title": "AuthLoginRequestBody",
  465 + "type": "object",
  466 + "properties": {
  467 + "password": {
  468 + "type": "string",
  469 + "description": "密码",
  470 + "required": [
  471 + "password"
  472 + ]
  473 + },
  474 + "username": {
  475 + "type": "string",
  476 + "description": "用户名",
  477 + "required": [
  478 + "username"
  479 + ]
  480 + }
  481 + }
  482 + },
  483 + "AuthLoginResponseBody": {
  484 + "title": "Mediatype identifier: AuthLoginResponseBody",
  485 + "type": "object",
  486 + "properties": {
  487 + "access": {
  488 + "$ref": "#/definitions/authAccessResponseBody"
  489 + }
  490 + }
  491 + },
  492 + "AuthProfileRequestBody": {
  493 + "title": "AuthProfileRequestBody",
  494 + "type": "object",
  495 + "properties": {
  496 + "userId": {
  497 + "type": "integer",
  498 + "required": [
  499 + "userId"
  500 + ]
  501 + }
  502 + }
  503 + },
  504 + "AuthProfileResponseBody": {
  505 + "title": "Mediatype identifier: AuthProfileResponseBody",
  506 + "type": "object",
  507 + "properties": {
  508 + "menus": {
  509 + "type": "array",
  510 + "items": {
  511 + "$ref": "#/definitions/menuResponseBody"
  512 + }
  513 + },
  514 + "user": {
  515 + "$ref": "#/definitions/authUserResponseBody"
  516 + }
  517 + }
  518 + },
  519 + "AuthRefreshRequestBody": {
  520 + "title": "AuthRefreshRequestBody",
  521 + "type": "object",
  522 + "properties": {
  523 + "refreshToken": {
  524 + "type": "string",
  525 + "required": [
  526 + "refreshToken"
  527 + ]
  528 + }
  529 + }
  530 + },
  531 + "AuthRefreshResponseBody": {
  532 + "title": "Mediatype identifier: AuthRefreshResponseBody",
  533 + "type": "object",
  534 + "properties": {
  535 + "access": {
  536 + "$ref": "#/definitions/authAccessResponseBody"
  537 + }
  538 + }
  539 + },
  540 + "RoleCreateRoleRequestBody": {
  541 + "title": "RoleCreateRoleRequestBody",
  542 + "type": "object",
  543 + "properties": {
  544 + "Id": {
  545 + "type": "integer",
  546 + "description": "角色id",
  547 + "required": [
  548 + "Id"
  549 + ]
  550 + },
  551 + "RoleName": {
  552 + "type": "string",
  553 + "description": "角色名称"
  554 + }
  555 + }
  556 + },
  557 + "RoleCreateRoleResponseBody": {
  558 + "title": "Mediatype identifier: RoleCreateRoleResponseBody",
  559 + "type": "object",
  560 + "properties": {
  561 + "role": {
  562 + "$ref": "#/definitions/roleResponseBody"
  563 + }
  564 + }
  565 + },
  566 + "RoleGetRoleRequestBody": {
  567 + "title": "RoleGetRoleRequestBody",
  568 + "type": "object",
  569 + "properties": {
  570 + "RoleId": {
  571 + "type": "integer",
  572 + "description": "角色id",
  573 + "required": [
  574 + "RoleId"
  575 + ]
  576 + }
  577 + }
  578 + },
  579 + "RoleGetRoleResponseBody": {
  580 + "title": "Mediatype identifier: RoleGetRoleResponseBody",
  581 + "type": "object",
  582 + "properties": {
  583 + "role": {
  584 + "$ref": "#/definitions/roleResponseBody"
  585 + }
  586 + }
  587 + },
  588 + "RoleListRoleResponseBody": {
  589 + "title": "Mediatype identifier: RoleListRoleResponseBody",
  590 + "type": "object",
  591 + "properties": {
  592 + "count": {
  593 + "type": "integer",
  594 + "description": "匹配数目",
  595 + "required": [
  596 + "count"
  597 + ]
  598 + },
  599 + "role": {
  600 + "$ref": "#/definitions/roleResponseBody"
  601 + }
  602 + }
  603 + },
  604 + "RoleRemoveRoleRequestBody": {
  605 + "title": "RoleRemoveRoleRequestBody",
  606 + "type": "object",
  607 + "properties": {
  608 + "RoleId": {
  609 + "type": "integer",
  610 + "description": "角色id",
  611 + "required": [
  612 + "RoleId"
  613 + ]
  614 + }
  615 + }
  616 + },
  617 + "RoleRemoveRoleResponseBody": {
  618 + "title": "Mediatype identifier: RoleRemoveRoleResponseBody",
  619 + "type": "object",
  620 + "properties": {
  621 + "role": {
  622 + "$ref": "#/definitions/roleResponseBody"
  623 + }
  624 + }
  625 + },
  626 + "RoleUpdateRoleRequestBody": {
  627 + "title": "RoleUpdateRoleRequestBody",
  628 + "type": "object",
  629 + "properties": {
  630 + "RoleId": {
  631 + "type": "integer",
  632 + "description": "角色id",
  633 + "required": [
  634 + "RoleId"
  635 + ]
  636 + }
  637 + }
  638 + },
  639 + "RoleUpdateRoleResponseBody": {
  640 + "title": "Mediatype identifier: RoleUpdateRoleResponseBody",
  641 + "type": "object",
  642 + "properties": {
  643 + "role": {
  644 + "$ref": "#/definitions/roleResponseBody"
  645 + }
  646 + }
  647 + },
  648 + "UsersCreateUsersRequestBody": {
  649 + "title": "UsersCreateUsersRequestBody",
  650 + "type": "object",
  651 + "properties": {
  652 + "name": {
  653 + "type": "string",
  654 + "required": [
  655 + "name"
  656 + ]
  657 + },
  658 + "phone": {
  659 + "type": "string",
  660 + "required": [
  661 + "phone"
  662 + ]
  663 + }
  664 + }
  665 + },
  666 + "UsersCreateUsersResponseBody": {
  667 + "title": "Mediatype identifier: UsersCreateUsersResponseBody",
  668 + "type": "object",
  669 + "properties": {
  670 + "users": {
  671 + "$ref": "#/definitions/usersResponseBody"
  672 + }
  673 + }
  674 + },
  675 + "UsersGetUsersRequestBody": {
  676 + "title": "UsersGetUsersRequestBody",
  677 + "type": "object",
  678 + "properties": {
  679 + "usersId": {
  680 + "type": "integer",
  681 + "description": "user - id",
  682 + "required": [
  683 + "usersId"
  684 + ]
  685 + }
  686 + }
  687 + },
  688 + "UsersGetUsersResponseBody": {
  689 + "title": "Mediatype identifier: UsersGetUsersResponseBody",
  690 + "type": "object",
  691 + "properties": {
  692 + "users": {
  693 + "$ref": "#/definitions/usersResponseBody"
  694 + }
  695 + }
  696 + },
  697 + "UsersListUsersResponseBody": {
  698 + "title": "Mediatype identifier: UsersListUsersResponseBody",
  699 + "type": "object",
  700 + "properties": {
  701 + "count": {
  702 + "type": "integer",
  703 + "description": "匹配数目",
  704 + "required": [
  705 + "count"
  706 + ]
  707 + },
  708 + "users": {
  709 + "$ref": "#/definitions/usersResponseBody"
  710 + }
  711 + }
  712 + },
  713 + "UsersRemoveUsersRequestBody": {
  714 + "title": "UsersRemoveUsersRequestBody",
  715 + "type": "object",
  716 + "properties": {
  717 + "usersId": {
  718 + "type": "integer",
  719 + "description": "user - id",
  720 + "required": [
  721 + "usersId"
  722 + ]
  723 + }
  724 + }
  725 + },
  726 + "UsersRemoveUsersResponseBody": {
  727 + "title": "Mediatype identifier: UsersRemoveUsersResponseBody",
  728 + "type": "object",
  729 + "properties": {
  730 + "users": {
  731 + "$ref": "#/definitions/usersResponseBody"
  732 + }
  733 + }
  734 + },
  735 + "UsersUpdateUsersRequestBody": {
  736 + "title": "UsersUpdateUsersRequestBody",
  737 + "type": "object",
  738 + "properties": {
  739 + "usersId": {
  740 + "type": "integer",
  741 + "description": "user - id",
  742 + "required": [
  743 + "usersId"
  744 + ]
  745 + }
  746 + }
  747 + },
  748 + "UsersUpdateUsersResponseBody": {
  749 + "title": "Mediatype identifier: UsersUpdateUsersResponseBody",
  750 + "type": "object",
  751 + "properties": {
  752 + "users": {
  753 + "$ref": "#/definitions/usersResponseBody"
  754 + }
  755 + }
  756 + },
  757 + "authAccessResponseBody": {
  758 + "title": "authAccessResponseBody",
  759 + "type": "object",
  760 + "properties": {
  761 + "accessToken": {
  762 + "type": "string",
  763 + "description": "权限token",
  764 + "required": [
  765 + "accessToken"
  766 + ]
  767 + },
  768 + "expiresIn": {
  769 + "type": "string",
  770 + "description": "accessToken 过期时间",
  771 + "required": [
  772 + "expiresIn"
  773 + ]
  774 + },
  775 + "refreshToken": {
  776 + "type": "string",
  777 + "description": "刷新token",
  778 + "required": [
  779 + "refreshToken"
  780 + ]
  781 + }
  782 + },
  783 + "description": "权限"
  784 + },
  785 + "authRoleResponseBody": {
  786 + "title": "authRoleResponseBody",
  787 + "type": "object",
  788 + "properties": {
  789 + "id": {
  790 + "type": "string",
  791 + "description": "角色id"
  792 + },
  793 + "name": {
  794 + "type": "string",
  795 + "description": "角色名称"
  796 + }
  797 + },
  798 + "description": "权限角色"
  799 + },
  800 + "authUserResponseBody": {
  801 + "title": "authUserResponseBody",
  802 + "type": "object",
  803 + "properties": {
  804 + "adminType": {
  805 + "type": "integer",
  806 + "description": "管理员类型 1:超级管理员 2:普通账号",
  807 + "format": "int64"
  808 + },
  809 + "id": {
  810 + "type": "integer",
  811 + "description": "用户id",
  812 + "format": "int64"
  813 + },
  814 + "name": {
  815 + "type": "string",
  816 + "description": "名称"
  817 + },
  818 + "phone": {
  819 + "type": "string",
  820 + "description": "电话"
  821 + },
  822 + "roles": {
  823 + "type": "array",
  824 + "items": {
  825 + "$ref": "#/definitions/authRoleResponseBody"
  826 + },
  827 + "description": "角色列表"
  828 + }
  829 + },
  830 + "description": "权限用户"
  831 + },
  832 + "menuResponseBody": {
  833 + "title": "menuResponseBody",
  834 + "type": "object",
  835 + "properties": {
  836 + "code": {
  837 + "type": "string",
  838 + "description": "菜单code"
  839 + },
  840 + "icon": {
  841 + "type": "string",
  842 + "description": "图标地址"
  843 + },
  844 + "id": {
  845 + "type": "integer",
  846 + "description": "编号",
  847 + "format": "int64"
  848 + },
  849 + "name": {
  850 + "type": "string",
  851 + "description": "菜单名称"
  852 + },
  853 + "parentId": {
  854 + "type": "integer",
  855 + "description": "父级id",
  856 + "format": "int64"
  857 + },
  858 + "sort": {
  859 + "type": "integer",
  860 + "description": "排序",
  861 + "format": "int64"
  862 + },
  863 + "status": {
  864 + "type": "integer",
  865 + "description": "状态 1-启用 0-禁用",
  866 + "format": "int64"
  867 + }
  868 + },
  869 + "description": "菜单"
  870 + },
  871 + "roleResponseBody": {
  872 + "title": "roleResponseBody",
  873 + "type": "object",
  874 + "properties": {
  875 + "CreateTime": {
  876 + "type": "string",
  877 + "description": "创建时间",
  878 + "required": [
  879 + "CreateTime"
  880 + ]
  881 + },
  882 + "Id": {
  883 + "type": "integer",
  884 + "description": "dcc",
  885 + "required": [
  886 + "Id"
  887 + ]
  888 + },
  889 + "ParentId": {
  890 + "type": "integer",
  891 + "description": "父级Id",
  892 + "required": [
  893 + "ParentId"
  894 + ]
  895 + },
  896 + "RoleName": {
  897 + "type": "string",
  898 + "description": "角色名称",
  899 + "required": [
  900 + "RoleName"
  901 + ]
  902 + },
  903 + "UpdateTime": {
  904 + "type": "string",
  905 + "description": "更新时间",
  906 + "required": [
  907 + "UpdateTime"
  908 + ]
  909 + }
  910 + },
  911 + "description": "角色实体"
  912 + },
  913 + "usersResponseBody": {
  914 + "title": "usersResponseBody",
  915 + "type": "object",
  916 + "properties": {
  917 + "AdminType": {
  918 + "type": "integer",
  919 + "description": "1:管理员 2:普通员工",
  920 + "required": [
  921 + "AdminType"
  922 + ]
  923 + },
  924 + "CreateTime": {
  925 + "type": "string",
  926 + "description": "创建时间",
  927 + "required": [
  928 + "CreateTime"
  929 + ]
  930 + },
  931 + "Id": {
  932 + "type": "integer",
  933 + "description": "dcc",
  934 + "required": [
  935 + "Id"
  936 + ]
  937 + },
  938 + "Name": {
  939 + "type": "string",
  940 + "description": "名称",
  941 + "required": [
  942 + "Name"
  943 + ]
  944 + },
  945 + "Passwd": {
  946 + "type": "string",
  947 + "description": "密码",
  948 + "required": [
  949 + "Passwd"
  950 + ]
  951 + },
  952 + "Phone": {
  953 + "type": "string",
  954 + "description": "手机号",
  955 + "required": [
  956 + "Phone"
  957 + ]
  958 + },
  959 + "Roles": {
  960 + "type": "array",
  961 + "items": {
  962 + "type": "integer",
  963 + "format": "int64"
  964 + },
  965 + "description": "用户角色",
  966 + "required": [
  967 + "Roles"
  968 + ]
  969 + },
  970 + "Status": {
  971 + "type": "integer",
  972 + "description": "状态 1-启用 0-禁用",
  973 + "required": [
  974 + "Status"
  975 + ]
  976 + },
  977 + "UpdateTime": {
  978 + "type": "string",
  979 + "description": "更新时间",
  980 + "required": [
  981 + "UpdateTime"
  982 + ]
  983 + }
  984 + },
  985 + "description": "用户实体"
  986 + }
  987 + }
  988 +}
  1 +swagger: "2.0"
  2 +info:
  3 + title: ""
  4 + description: 开发工具平台
  5 + contact:
  6 + name: tiptok
  7 + email: 785409885@qq.com
  8 + home: ""
  9 + version: 0.0.1
  10 +consumes:
  11 +- application/json
  12 +- application/xml
  13 +produces:
  14 +- application/json
  15 +- application/xml
  16 +paths:
  17 + /auth/login:
  18 + post:
  19 + tags:
  20 + - auth
  21 + summary: 登录
  22 + description: 登录
  23 + operationId: auth#login
  24 + parameters:
  25 + - name: LoginRequestBody
  26 + in: body
  27 + required: true
  28 + schema:
  29 + $ref: '#/definitions/AuthLoginRequestBody'
  30 + responses:
  31 + "200":
  32 + description: OK response.
  33 + schema:
  34 + $ref: '#/definitions/AuthLoginResponseBody'
  35 + schemes:
  36 + - http
  37 + /auth/profile:
  38 + post:
  39 + tags:
  40 + - auth
  41 + summary: 获得当前用户数据
  42 + description: 获得当前用户数据
  43 + operationId: auth#profile
  44 + parameters:
  45 + - name: ProfileRequestBody
  46 + in: body
  47 + required: true
  48 + schema:
  49 + $ref: '#/definitions/AuthProfileRequestBody'
  50 + responses:
  51 + "200":
  52 + description: OK response.
  53 + schema:
  54 + $ref: '#/definitions/AuthProfileResponseBody'
  55 + schemes:
  56 + - http
  57 + /auth/refresh:
  58 + post:
  59 + tags:
  60 + - auth
  61 + summary: 刷新权限
  62 + description: 刷新权限
  63 + operationId: auth#refresh
  64 + parameters:
  65 + - name: RefreshRequestBody
  66 + in: body
  67 + required: true
  68 + schema:
  69 + $ref: '#/definitions/AuthRefreshRequestBody'
  70 + responses:
  71 + "200":
  72 + description: OK response.
  73 + schema:
  74 + $ref: '#/definitions/AuthRefreshResponseBody'
  75 + schemes:
  76 + - http
  77 + /roles:
  78 + get:
  79 + tags:
  80 + - role
  81 + summary: 返回列表
  82 + description: 返回列表
  83 + operationId: role#listRole
  84 + parameters:
  85 + - name: offset
  86 + in: query
  87 + description: 查询偏离量
  88 + required: false
  89 + type: integer
  90 + - name: limit
  91 + in: query
  92 + description: 查询限制
  93 + required: false
  94 + type: integer
  95 + responses:
  96 + "200":
  97 + description: OK response.
  98 + schema:
  99 + $ref: '#/definitions/RoleListRoleResponseBody'
  100 + schemes:
  101 + - http
  102 + post:
  103 + tags:
  104 + - role
  105 + summary: 创建
  106 + description: 创建
  107 + operationId: role#createRole
  108 + parameters:
  109 + - name: CreateRoleRequestBody
  110 + in: body
  111 + required: true
  112 + schema:
  113 + $ref: '#/definitions/RoleCreateRoleRequestBody'
  114 + responses:
  115 + "200":
  116 + description: OK response.
  117 + schema:
  118 + $ref: '#/definitions/RoleCreateRoleResponseBody'
  119 + schemes:
  120 + - http
  121 + /roles/{Id}:
  122 + get:
  123 + tags:
  124 + - role
  125 + summary: 返回
  126 + description: 返回
  127 + operationId: role#getRole
  128 + parameters:
  129 + - name: Id
  130 + in: path
  131 + required: true
  132 + type: string
  133 + - name: GetRoleRequestBody
  134 + in: body
  135 + required: true
  136 + schema:
  137 + $ref: '#/definitions/RoleGetRoleRequestBody'
  138 + responses:
  139 + "200":
  140 + description: OK response.
  141 + schema:
  142 + $ref: '#/definitions/RoleGetRoleResponseBody'
  143 + schemes:
  144 + - http
  145 + put:
  146 + tags:
  147 + - role
  148 + summary: 更新
  149 + description: 更新
  150 + operationId: role#updateRole
  151 + parameters:
  152 + - name: Id
  153 + in: path
  154 + required: true
  155 + type: string
  156 + - name: UpdateRoleRequestBody
  157 + in: body
  158 + required: true
  159 + schema:
  160 + $ref: '#/definitions/RoleUpdateRoleRequestBody'
  161 + responses:
  162 + "200":
  163 + description: OK response.
  164 + schema:
  165 + $ref: '#/definitions/RoleUpdateRoleResponseBody'
  166 + schemes:
  167 + - http
  168 + delete:
  169 + tags:
  170 + - role
  171 + summary: 移除
  172 + description: 移除
  173 + operationId: role#removeRole
  174 + parameters:
  175 + - name: Id
  176 + in: path
  177 + required: true
  178 + type: string
  179 + - name: RemoveRoleRequestBody
  180 + in: body
  181 + required: true
  182 + schema:
  183 + $ref: '#/definitions/RoleRemoveRoleRequestBody'
  184 + responses:
  185 + "200":
  186 + description: OK response.
  187 + schema:
  188 + $ref: '#/definitions/RoleRemoveRoleResponseBody'
  189 + schemes:
  190 + - http
  191 + /users:
  192 + get:
  193 + tags:
  194 + - users
  195 + summary: 返回列表
  196 + description: 返回列表
  197 + operationId: users#listUsers
  198 + parameters:
  199 + - name: offset
  200 + in: query
  201 + description: 查询偏离量
  202 + required: false
  203 + type: integer
  204 + - name: limit
  205 + in: query
  206 + description: 查询限制
  207 + required: false
  208 + type: integer
  209 + responses:
  210 + "200":
  211 + description: OK response.
  212 + schema:
  213 + $ref: '#/definitions/UsersListUsersResponseBody'
  214 + schemes:
  215 + - http
  216 + post:
  217 + tags:
  218 + - users
  219 + summary: 创建
  220 + description: 创建
  221 + operationId: users#createUsers
  222 + parameters:
  223 + - name: CreateUsersRequestBody
  224 + in: body
  225 + required: true
  226 + schema:
  227 + $ref: '#/definitions/UsersCreateUsersRequestBody'
  228 + responses:
  229 + "200":
  230 + description: OK response.
  231 + schema:
  232 + $ref: '#/definitions/UsersCreateUsersResponseBody'
  233 + schemes:
  234 + - http
  235 + /users/{Id}:
  236 + get:
  237 + tags:
  238 + - users
  239 + summary: 返回
  240 + description: 返回
  241 + operationId: users#getUsers
  242 + parameters:
  243 + - name: Id
  244 + in: path
  245 + required: true
  246 + type: string
  247 + - name: GetUsersRequestBody
  248 + in: body
  249 + required: true
  250 + schema:
  251 + $ref: '#/definitions/UsersGetUsersRequestBody'
  252 + responses:
  253 + "200":
  254 + description: OK response.
  255 + schema:
  256 + $ref: '#/definitions/UsersGetUsersResponseBody'
  257 + schemes:
  258 + - http
  259 + put:
  260 + tags:
  261 + - users
  262 + summary: 更新
  263 + description: 更新
  264 + operationId: users#updateUsers
  265 + parameters:
  266 + - name: Id
  267 + in: path
  268 + required: true
  269 + type: string
  270 + - name: UpdateUsersRequestBody
  271 + in: body
  272 + required: true
  273 + schema:
  274 + $ref: '#/definitions/UsersUpdateUsersRequestBody'
  275 + responses:
  276 + "200":
  277 + description: OK response.
  278 + schema:
  279 + $ref: '#/definitions/UsersUpdateUsersResponseBody'
  280 + schemes:
  281 + - http
  282 + delete:
  283 + tags:
  284 + - users
  285 + summary: 移除
  286 + description: 移除
  287 + operationId: users#removeUsers
  288 + parameters:
  289 + - name: Id
  290 + in: path
  291 + required: true
  292 + type: string
  293 + - name: RemoveUsersRequestBody
  294 + in: body
  295 + required: true
  296 + schema:
  297 + $ref: '#/definitions/UsersRemoveUsersRequestBody'
  298 + responses:
  299 + "200":
  300 + description: OK response.
  301 + schema:
  302 + $ref: '#/definitions/UsersRemoveUsersResponseBody'
  303 + schemes:
  304 + - http
  305 +definitions:
  306 + AuthLoginRequestBody:
  307 + title: AuthLoginRequestBody
  308 + type: object
  309 + properties:
  310 + password:
  311 + type: string
  312 + description: 密码
  313 + required:
  314 + - password
  315 + username:
  316 + type: string
  317 + description: 用户名
  318 + required:
  319 + - username
  320 + AuthLoginResponseBody:
  321 + title: 'Mediatype identifier: AuthLoginResponseBody'
  322 + type: object
  323 + properties:
  324 + access:
  325 + $ref: '#/definitions/authAccessResponseBody'
  326 + AuthProfileRequestBody:
  327 + title: AuthProfileRequestBody
  328 + type: object
  329 + properties:
  330 + userId:
  331 + type: integer
  332 + required:
  333 + - userId
  334 + AuthProfileResponseBody:
  335 + title: 'Mediatype identifier: AuthProfileResponseBody'
  336 + type: object
  337 + properties:
  338 + menus:
  339 + type: array
  340 + items:
  341 + $ref: '#/definitions/menuResponseBody'
  342 + user:
  343 + $ref: '#/definitions/authUserResponseBody'
  344 + AuthRefreshRequestBody:
  345 + title: AuthRefreshRequestBody
  346 + type: object
  347 + properties:
  348 + refreshToken:
  349 + type: string
  350 + required:
  351 + - refreshToken
  352 + AuthRefreshResponseBody:
  353 + title: 'Mediatype identifier: AuthRefreshResponseBody'
  354 + type: object
  355 + properties:
  356 + access:
  357 + $ref: '#/definitions/authAccessResponseBody'
  358 + RoleCreateRoleRequestBody:
  359 + title: RoleCreateRoleRequestBody
  360 + type: object
  361 + properties:
  362 + Id:
  363 + type: integer
  364 + description: 角色id
  365 + required:
  366 + - Id
  367 + RoleName:
  368 + type: string
  369 + description: 角色名称
  370 + RoleCreateRoleResponseBody:
  371 + title: 'Mediatype identifier: RoleCreateRoleResponseBody'
  372 + type: object
  373 + properties:
  374 + role:
  375 + $ref: '#/definitions/roleResponseBody'
  376 + RoleGetRoleRequestBody:
  377 + title: RoleGetRoleRequestBody
  378 + type: object
  379 + properties:
  380 + RoleId:
  381 + type: integer
  382 + description: 角色id
  383 + required:
  384 + - RoleId
  385 + RoleGetRoleResponseBody:
  386 + title: 'Mediatype identifier: RoleGetRoleResponseBody'
  387 + type: object
  388 + properties:
  389 + role:
  390 + $ref: '#/definitions/roleResponseBody'
  391 + RoleListRoleResponseBody:
  392 + title: 'Mediatype identifier: RoleListRoleResponseBody'
  393 + type: object
  394 + properties:
  395 + count:
  396 + type: integer
  397 + description: 匹配数目
  398 + required:
  399 + - count
  400 + role:
  401 + $ref: '#/definitions/roleResponseBody'
  402 + RoleRemoveRoleRequestBody:
  403 + title: RoleRemoveRoleRequestBody
  404 + type: object
  405 + properties:
  406 + RoleId:
  407 + type: integer
  408 + description: 角色id
  409 + required:
  410 + - RoleId
  411 + RoleRemoveRoleResponseBody:
  412 + title: 'Mediatype identifier: RoleRemoveRoleResponseBody'
  413 + type: object
  414 + properties:
  415 + role:
  416 + $ref: '#/definitions/roleResponseBody'
  417 + RoleUpdateRoleRequestBody:
  418 + title: RoleUpdateRoleRequestBody
  419 + type: object
  420 + properties:
  421 + RoleId:
  422 + type: integer
  423 + description: 角色id
  424 + required:
  425 + - RoleId
  426 + RoleUpdateRoleResponseBody:
  427 + title: 'Mediatype identifier: RoleUpdateRoleResponseBody'
  428 + type: object
  429 + properties:
  430 + role:
  431 + $ref: '#/definitions/roleResponseBody'
  432 + UsersCreateUsersRequestBody:
  433 + title: UsersCreateUsersRequestBody
  434 + type: object
  435 + properties:
  436 + name:
  437 + type: string
  438 + required:
  439 + - name
  440 + phone:
  441 + type: string
  442 + required:
  443 + - phone
  444 + UsersCreateUsersResponseBody:
  445 + title: 'Mediatype identifier: UsersCreateUsersResponseBody'
  446 + type: object
  447 + properties:
  448 + users:
  449 + $ref: '#/definitions/usersResponseBody'
  450 + UsersGetUsersRequestBody:
  451 + title: UsersGetUsersRequestBody
  452 + type: object
  453 + properties:
  454 + usersId:
  455 + type: integer
  456 + description: user - id
  457 + required:
  458 + - usersId
  459 + UsersGetUsersResponseBody:
  460 + title: 'Mediatype identifier: UsersGetUsersResponseBody'
  461 + type: object
  462 + properties:
  463 + users:
  464 + $ref: '#/definitions/usersResponseBody'
  465 + UsersListUsersResponseBody:
  466 + title: 'Mediatype identifier: UsersListUsersResponseBody'
  467 + type: object
  468 + properties:
  469 + count:
  470 + type: integer
  471 + description: 匹配数目
  472 + required:
  473 + - count
  474 + users:
  475 + $ref: '#/definitions/usersResponseBody'
  476 + UsersRemoveUsersRequestBody:
  477 + title: UsersRemoveUsersRequestBody
  478 + type: object
  479 + properties:
  480 + usersId:
  481 + type: integer
  482 + description: user - id
  483 + required:
  484 + - usersId
  485 + UsersRemoveUsersResponseBody:
  486 + title: 'Mediatype identifier: UsersRemoveUsersResponseBody'
  487 + type: object
  488 + properties:
  489 + users:
  490 + $ref: '#/definitions/usersResponseBody'
  491 + UsersUpdateUsersRequestBody:
  492 + title: UsersUpdateUsersRequestBody
  493 + type: object
  494 + properties:
  495 + usersId:
  496 + type: integer
  497 + description: user - id
  498 + required:
  499 + - usersId
  500 + UsersUpdateUsersResponseBody:
  501 + title: 'Mediatype identifier: UsersUpdateUsersResponseBody'
  502 + type: object
  503 + properties:
  504 + users:
  505 + $ref: '#/definitions/usersResponseBody'
  506 + authAccessResponseBody:
  507 + title: authAccessResponseBody
  508 + type: object
  509 + properties:
  510 + accessToken:
  511 + type: string
  512 + description: 权限token
  513 + required:
  514 + - accessToken
  515 + expiresIn:
  516 + type: string
  517 + description: accessToken 过期时间
  518 + required:
  519 + - expiresIn
  520 + refreshToken:
  521 + type: string
  522 + description: 刷新token
  523 + required:
  524 + - refreshToken
  525 + description: 权限
  526 + authRoleResponseBody:
  527 + title: authRoleResponseBody
  528 + type: object
  529 + properties:
  530 + id:
  531 + type: string
  532 + description: 角色id
  533 + name:
  534 + type: string
  535 + description: 角色名称
  536 + description: 权限角色
  537 + authUserResponseBody:
  538 + title: authUserResponseBody
  539 + type: object
  540 + properties:
  541 + adminType:
  542 + type: integer
  543 + description: 管理员类型 1:超级管理员 2:普通账号
  544 + format: int64
  545 + id:
  546 + type: integer
  547 + description: 用户id
  548 + format: int64
  549 + name:
  550 + type: string
  551 + description: 名称
  552 + phone:
  553 + type: string
  554 + description: 电话
  555 + roles:
  556 + type: array
  557 + items:
  558 + $ref: '#/definitions/authRoleResponseBody'
  559 + description: 角色列表
  560 + description: 权限用户
  561 + menuResponseBody:
  562 + title: menuResponseBody
  563 + type: object
  564 + properties:
  565 + code:
  566 + type: string
  567 + description: 菜单code
  568 + icon:
  569 + type: string
  570 + description: 图标地址
  571 + id:
  572 + type: integer
  573 + description: 编号
  574 + format: int64
  575 + name:
  576 + type: string
  577 + description: 菜单名称
  578 + parentId:
  579 + type: integer
  580 + description: 父级id
  581 + format: int64
  582 + sort:
  583 + type: integer
  584 + description: 排序
  585 + format: int64
  586 + status:
  587 + type: integer
  588 + description: 状态 1-启用 0-禁用
  589 + format: int64
  590 + description: 菜单
  591 + roleResponseBody:
  592 + title: roleResponseBody
  593 + type: object
  594 + properties:
  595 + CreateTime:
  596 + type: string
  597 + description: 创建时间
  598 + required:
  599 + - CreateTime
  600 + Id:
  601 + type: integer
  602 + description: dcc
  603 + required:
  604 + - Id
  605 + ParentId:
  606 + type: integer
  607 + description: 父级Id
  608 + required:
  609 + - ParentId
  610 + RoleName:
  611 + type: string
  612 + description: 角色名称
  613 + required:
  614 + - RoleName
  615 + UpdateTime:
  616 + type: string
  617 + description: 更新时间
  618 + required:
  619 + - UpdateTime
  620 + description: 角色实体
  621 + usersResponseBody:
  622 + title: usersResponseBody
  623 + type: object
  624 + properties:
  625 + AdminType:
  626 + type: integer
  627 + description: 1:管理员 2:普通员工
  628 + required:
  629 + - AdminType
  630 + CreateTime:
  631 + type: string
  632 + description: 创建时间
  633 + required:
  634 + - CreateTime
  635 + Id:
  636 + type: integer
  637 + description: dcc
  638 + required:
  639 + - Id
  640 + Name:
  641 + type: string
  642 + description: 名称
  643 + required:
  644 + - Name
  645 + Passwd:
  646 + type: string
  647 + description: 密码
  648 + required:
  649 + - Passwd
  650 + Phone:
  651 + type: string
  652 + description: 手机号
  653 + required:
  654 + - Phone
  655 + Roles:
  656 + type: array
  657 + items:
  658 + type: integer
  659 + format: int64
  660 + description: 用户角色
  661 + required:
  662 + - Roles
  663 + Status:
  664 + type: integer
  665 + description: 状态 1-启用 0-禁用
  666 + required:
  667 + - Status
  668 + UpdateTime:
  669 + type: string
  670 + description: 更新时间
  671 + required:
  672 + - UpdateTime
  673 + description: 用户实体
@@ -3,6 +3,8 @@ module github.com/tiptok/godevp @@ -3,6 +3,8 @@ module github.com/tiptok/godevp
3 go 1.15 3 go 1.15
4 4
5 require ( 5 require (
  6 + github.com/99designs/gqlgen v0.13.0
  7 + github.com/Laisky/laisky-blog-graphql v0.5.1 // indirect
6 github.com/ajg/form v1.5.1 // indirect 8 github.com/ajg/form v1.5.1 // indirect
7 github.com/astaxie/beego v1.12.3 9 github.com/astaxie/beego v1.12.3
8 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect 10 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect
@@ -20,15 +22,14 @@ require ( @@ -20,15 +22,14 @@ require (
20 github.com/onsi/gomega v1.10.4 22 github.com/onsi/gomega v1.10.4
21 github.com/sergi/go-diff v1.1.0 // indirect 23 github.com/sergi/go-diff v1.1.0 // indirect
22 github.com/smartystreets/goconvey v1.6.4 // indirect 24 github.com/smartystreets/goconvey v1.6.4 // indirect
  25 + github.com/tiptok/gocomm v1.0.5
23 github.com/valyala/fasthttp v1.18.0 // indirect 26 github.com/valyala/fasthttp v1.18.0 // indirect
  27 + github.com/vektah/gqlparser/v2 v2.1.0
24 github.com/xeipuuv/gojsonschema v1.2.0 // indirect 28 github.com/xeipuuv/gojsonschema v1.2.0 // indirect
25 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect 29 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect
26 github.com/yudai/gojsondiff v1.0.0 // indirect 30 github.com/yudai/gojsondiff v1.0.0 // indirect
27 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect 31 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
28 github.com/yudai/pp v2.0.1+incompatible // indirect 32 github.com/yudai/pp v2.0.1+incompatible // indirect
29 - github.com/tiptok/gocomm v1.0.5  
30 ) 33 )
31 34
32 -replace (  
33 - github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb => F:\go\src\learn_project\egglib-go  
34 -) 35 +replace github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb => F:\go\src\learn_project\egglib-go
1 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= 1 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
  2 +github.com/99designs/gqlgen v0.8.3/go.mod h1:aLyJw9xUgdJxZ8EqNQxo2pGFhXXJ/hq8t7J4yn8TgI4=
  3 +github.com/99designs/gqlgen v0.13.0 h1:haLTcUp3Vwp80xMVEg5KRNwzfUrgFdRmtBY8fuB8scA=
  4 +github.com/99designs/gqlgen v0.13.0/go.mod h1:NV130r6f4tpRWuAI+zsrSdooO/eWUv+Gyyoi3rEfXIk=
2 github.com/Azure/azure-sdk-for-go v16.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= 5 github.com/Azure/azure-sdk-for-go v16.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
3 github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= 6 github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
4 github.com/Azure/go-autorest v10.7.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= 7 github.com/Azure/go-autorest v10.7.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
@@ -9,8 +12,17 @@ github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q @@ -9,8 +12,17 @@ github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q
9 github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= 12 github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
10 github.com/DataDog/sketches-go v0.0.0-20190923095040-43f19ad77ff7/go.mod h1:Q5DbzQ+3AkgGwymQO7aZFNP7ns2lZKGtvRBzRXfdi60= 13 github.com/DataDog/sketches-go v0.0.0-20190923095040-43f19ad77ff7/go.mod h1:Q5DbzQ+3AkgGwymQO7aZFNP7ns2lZKGtvRBzRXfdi60=
11 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= 14 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
  15 +github.com/DataDog/zstd v1.3.8/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
12 github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= 16 github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc=
13 github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= 17 github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
  18 +github.com/Laisky/go-chaining v0.0.0-20180507092046-43dcdc5a21be h1:7Rxhm6IjOtDAyj8eScOFntevwzkWhx94zi48lxo4m4w=
  19 +github.com/Laisky/go-chaining v0.0.0-20180507092046-43dcdc5a21be/go.mod h1:1mdzaETo0kjvCQICPSePsoaatJN4l7JvEA1200lyevo=
  20 +github.com/Laisky/go-utils v1.8.1 h1:bd8yQOpKsX23xl/2JbPAFUa6rhp+ivVnUXelpIkmscc=
  21 +github.com/Laisky/go-utils v1.8.1/go.mod h1:xqOWv8whvlG0Uvib+4W3moyvQzPFlQBGLYjhpzxXvXs=
  22 +github.com/Laisky/laisky-blog-graphql v0.5.1 h1:XSC/MRINOtab2TJt0lde4MdFaQbyH1XE70yNhmvrtrc=
  23 +github.com/Laisky/laisky-blog-graphql v0.5.1/go.mod h1:p6DRmi2QO+1X/mUovmZRqFIMewZ7JB575zTzsZNxoo8=
  24 +github.com/Laisky/zap v1.9.2 h1:7dTtABboHk8DnT0d6Dc8A9Opu2cyIEaMlL9JO11zvag=
  25 +github.com/Laisky/zap v1.9.2/go.mod h1:CQdLb2wEfqBvoNLmfOp7wnKTOMvhc4DQRc3xfshL4EQ=
14 github.com/Microsoft/go-winio v0.4.3/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= 26 github.com/Microsoft/go-winio v0.4.3/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
15 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= 27 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
16 github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= 28 github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
@@ -19,8 +31,10 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE @@ -19,8 +31,10 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
19 github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM= 31 github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM=
20 github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= 32 github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
21 github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= 33 github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
  34 +github.com/RoaringBitmap/roaring v0.4.18/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI=
22 github.com/SAP/go-hdb v0.12.0/go.mod h1:etBT+FAi1t5k3K3tf5vQTnosgYmhDkRi8jEnQqCnxF0= 35 github.com/SAP/go-hdb v0.12.0/go.mod h1:etBT+FAi1t5k3K3tf5vQTnosgYmhDkRi8jEnQqCnxF0=
23 github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= 36 github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA=
  37 +github.com/Shopify/sarama v1.22.1/go.mod h1:FRzlvRpMFO/639zY1SDxUxkqH97Y0ndM5CbGj6oG3As=
24 github.com/Shopify/sarama v1.23.1/go.mod h1:XLH1GYJnLVE0XCr6KdJGVJRTwY30moWNJ4sERjXX6fs= 38 github.com/Shopify/sarama v1.23.1/go.mod h1:XLH1GYJnLVE0XCr6KdJGVJRTwY30moWNJ4sERjXX6fs=
25 github.com/Shopify/sarama v1.26.4 h1:+17TxUq/PJEAfZAll0T7XJjSgQWCpaQSoki/x5yN8o8= 39 github.com/Shopify/sarama v1.26.4 h1:+17TxUq/PJEAfZAll0T7XJjSgQWCpaQSoki/x5yN8o8=
26 github.com/Shopify/sarama v1.26.4/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= 40 github.com/Shopify/sarama v1.26.4/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU=
@@ -31,6 +45,10 @@ github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrU @@ -31,6 +45,10 @@ github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrU
31 github.com/Workiva/go-datastructures v1.0.50/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= 45 github.com/Workiva/go-datastructures v1.0.50/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA=
32 github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= 46 github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw=
33 github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= 47 github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
  48 +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
  49 +github.com/agnivade/levenshtein v1.0.2/go.mod h1:JLvzGblJATanj48SD0YhHTEFGkWvw3ASLFWSiMIFXsE=
  50 +github.com/agnivade/levenshtein v1.0.3 h1:M5ZnqLOoZR8ygVq0FfkXsNOKzMCk0xRiow0R5+5VkQ0=
  51 +github.com/agnivade/levenshtein v1.0.3/go.mod h1:4SFRZbbXWLF4MU1T9Qg0pGgH3Pjs+t6ie5efyrwRJXs=
34 github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= 52 github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
35 github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= 53 github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
36 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= 54 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
@@ -42,11 +60,13 @@ github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGn @@ -42,11 +60,13 @@ github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGn
42 github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= 60 github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk=
43 github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= 61 github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk=
44 github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= 62 github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
  63 +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
45 github.com/andybalholm/brotli v1.0.0 h1:7UCwP93aiSfvWpapti8g88vVVGp2qqtGyePsSuDafo4= 64 github.com/andybalholm/brotli v1.0.0 h1:7UCwP93aiSfvWpapti8g88vVVGp2qqtGyePsSuDafo4=
46 github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= 65 github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
47 github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= 66 github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
48 github.com/apache/dubbo-go v1.4.2/go.mod h1:KEMiKpHQDsRMywgiRzM6EdlqMu6dlZJBmfqKCK1LTMU= 67 github.com/apache/dubbo-go v1.4.2/go.mod h1:KEMiKpHQDsRMywgiRzM6EdlqMu6dlZJBmfqKCK1LTMU=
49 github.com/apache/dubbo-go-hessian2 v1.4.0/go.mod h1:VwEnsOMidkM1usya2uPfGpSLO9XUF//WQcWn3y+jFz8= 68 github.com/apache/dubbo-go-hessian2 v1.4.0/go.mod h1:VwEnsOMidkM1usya2uPfGpSLO9XUF//WQcWn3y+jFz8=
  69 +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
50 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= 70 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
51 github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= 71 github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
52 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= 72 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
@@ -72,6 +92,7 @@ github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwj @@ -72,6 +92,7 @@ github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwj
72 github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= 92 github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
73 github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= 93 github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
74 github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= 94 github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
  95 +github.com/bsm/sarama-cluster v2.1.16-0.20190423073834-d5779253526c+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM=
75 github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= 96 github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
76 github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= 97 github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
77 github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= 98 github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
@@ -96,6 +117,7 @@ github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkE @@ -96,6 +117,7 @@ github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkE
96 github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= 117 github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
97 github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= 118 github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
98 github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= 119 github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
  120 +github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
99 github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= 121 github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
100 github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= 122 github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
101 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= 123 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
@@ -122,6 +144,7 @@ github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661/go.mod h1:dV8l @@ -122,6 +144,7 @@ github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661/go.mod h1:dV8l
122 github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= 144 github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
123 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= 145 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
124 github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= 146 github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
  147 +github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
125 github.com/digitalocean/godo v1.1.1/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= 148 github.com/digitalocean/godo v1.1.1/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU=
126 github.com/digitalocean/godo v1.10.0/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= 149 github.com/digitalocean/godo v1.10.0/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU=
127 github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= 150 github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
@@ -171,12 +194,18 @@ github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU @@ -171,12 +194,18 @@ github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU
171 github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= 194 github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
172 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= 195 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
173 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= 196 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
  197 +github.com/gin-contrib/pprof v1.2.1/go.mod h1:u2l4P4YNkLXYz+xBbrl7Pxu1Btng6VCD7j3O3pUPP2w=
  198 +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
174 github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= 199 github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
175 github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= 200 github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
  201 +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
176 github.com/gin-gonic/gin v1.5.0 h1:fi+bqFAx/oLK54somfCtEZs9HeH1LHVoEPUgARpTqyc= 202 github.com/gin-gonic/gin v1.5.0 h1:fi+bqFAx/oLK54somfCtEZs9HeH1LHVoEPUgARpTqyc=
177 github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= 203 github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do=
178 github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw= 204 github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw=
179 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= 205 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
  206 +github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
  207 +github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
  208 +github.com/go-chi/chi v3.3.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
180 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= 209 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
181 github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 210 github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
182 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= 211 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
@@ -225,6 +254,7 @@ github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuq @@ -225,6 +254,7 @@ github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuq
225 github.com/gocql/gocql v0.0.0-20180617115710-e06f8c1bcd78/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0= 254 github.com/gocql/gocql v0.0.0-20180617115710-e06f8c1bcd78/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0=
226 github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= 255 github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
227 github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= 256 github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
  257 +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
228 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 258 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
229 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= 259 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
230 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= 260 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
@@ -257,6 +287,7 @@ github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8l @@ -257,6 +287,7 @@ github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8l
257 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 287 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
258 github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= 288 github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
259 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 289 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
  290 +github.com/gomarkdown/markdown v0.0.0-20190222000725-ee6a7931a1e4/go.mod h1:gmFANS06wAVmF0B9yi65QKsRmPQ97tze7FRLswua+OY=
260 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= 291 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
261 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= 292 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
262 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= 293 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@@ -284,8 +315,12 @@ github.com/gophercloud/gophercloud v0.0.0-20180828235145-f29afc2cceca/go.mod h1: @@ -284,8 +315,12 @@ github.com/gophercloud/gophercloud v0.0.0-20180828235145-f29afc2cceca/go.mod h1:
284 github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= 315 github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
285 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= 316 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
286 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= 317 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
  318 +github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
  319 +github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
287 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= 320 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
  321 +github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
288 github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= 322 github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
  323 +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
289 github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= 324 github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
290 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 325 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
291 github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= 326 github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
@@ -330,6 +365,7 @@ github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b @@ -330,6 +365,7 @@ github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b
330 github.com/hashicorp/go-version v0.0.0-20170202080759-03c5bf6be031/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 365 github.com/hashicorp/go-version v0.0.0-20170202080759-03c5bf6be031/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
331 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= 366 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
332 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= 367 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
  368 +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
333 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= 369 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
334 github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= 370 github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
335 github.com/hashicorp/hcl v0.0.0-20180906183839-65a6292f0157/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 371 github.com/hashicorp/hcl v0.0.0-20180906183839-65a6292f0157/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
@@ -374,6 +410,7 @@ github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV @@ -374,6 +410,7 @@ github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV
374 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= 410 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
375 github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 411 github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
376 github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 412 github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
  413 +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
377 github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 414 github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
378 github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= 415 github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
379 github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= 416 github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
@@ -418,11 +455,13 @@ github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 h1:zJZsqJ1wFMYb @@ -418,11 +455,13 @@ github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 h1:zJZsqJ1wFMYb
418 github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk= 455 github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk=
419 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb h1:Ocxw5BWyRrRkTHSsTmQx0UnGsAYZDOwa3K9oGlXF8Jo= 456 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb h1:Ocxw5BWyRrRkTHSsTmQx0UnGsAYZDOwa3K9oGlXF8Jo=
420 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk= 457 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk=
  458 +github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
421 github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= 459 github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
422 github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= 460 github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
423 github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= 461 github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
424 github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= 462 github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
425 github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= 463 github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
  464 +github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
426 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= 465 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
427 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= 466 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
428 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= 467 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -431,6 +470,7 @@ github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ @@ -431,6 +470,7 @@ github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ
431 github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 470 github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
432 github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= 471 github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
433 github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= 472 github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
  473 +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
434 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= 474 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
435 github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= 475 github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
436 github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= 476 github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
@@ -456,22 +496,27 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 @@ -456,22 +496,27 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4
456 github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= 496 github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
457 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= 497 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
458 github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= 498 github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
  499 +github.com/mitchellh/mapstructure v0.0.0-20180203102830-a4e142e9c047/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
459 github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= 500 github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
460 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= 501 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
461 github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= 502 github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
462 github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= 503 github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
463 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 504 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
  505 +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
464 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 506 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
465 github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 507 github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
466 github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 508 github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
  509 +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
467 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 510 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
468 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= 511 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
469 github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= 512 github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
470 github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= 513 github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
  514 +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
471 github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 515 github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
472 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= 516 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
473 github.com/nacos-group/nacos-sdk-go v0.3.2/go.mod h1:4TdsN7eZnnVCDlOlBa61b0gsRnvNJI74m9+2+OKZkcw= 517 github.com/nacos-group/nacos-sdk-go v0.3.2/go.mod h1:4TdsN7eZnnVCDlOlBa61b0gsRnvNJI74m9+2+OKZkcw=
474 github.com/nacos-group/nacos-sdk-go v0.4.0/go.mod h1:MfkNtW4vNuRK7em17n3nbIA2lTfvr0klOmOFyL4/RdM= 518 github.com/nacos-group/nacos-sdk-go v0.4.0/go.mod h1:MfkNtW4vNuRK7em17n3nbIA2lTfvr0klOmOFyL4/RdM=
  519 +github.com/ncw/directio v1.0.5/go.mod h1:rX/pKEYkOXBGOggmcyJeJGloCkleSvphPx2eV3t6ROk=
475 github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2/go.mod h1:TLb2Sg7HQcgGdloNxkrmtgDNR9uVYF3lfdFIN4Ro6Sk= 520 github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2/go.mod h1:TLb2Sg7HQcgGdloNxkrmtgDNR9uVYF3lfdFIN4Ro6Sk=
476 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= 521 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
477 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 522 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
@@ -484,6 +529,7 @@ github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FW @@ -484,6 +529,7 @@ github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FW
484 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 529 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
485 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 530 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
486 github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 531 github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
  532 +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
487 github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 533 github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
488 github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 534 github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
489 github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= 535 github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
@@ -503,6 +549,8 @@ github.com/onsi/gomega v1.10.4/go.mod h1:g/HbgYopi++010VEqkFgJHKC09uJiW9UkXvMUuK @@ -503,6 +549,8 @@ github.com/onsi/gomega v1.10.4/go.mod h1:g/HbgYopi++010VEqkFgJHKC09uJiW9UkXvMUuK
503 github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= 549 github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
504 github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= 550 github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
505 github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= 551 github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
  552 +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
  553 +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
506 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= 554 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
507 github.com/opentracing/opentracing-go v1.1.1-0.20190913142402-a7454ce5950e/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= 555 github.com/opentracing/opentracing-go v1.1.1-0.20190913142402-a7454ce5950e/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
508 github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= 556 github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
@@ -513,8 +561,11 @@ github.com/patrickmn/go-cache v0.0.0-20180527043350-9f6ff22cfff8/go.mod h1:3Qf8k @@ -513,8 +561,11 @@ github.com/patrickmn/go-cache v0.0.0-20180527043350-9f6ff22cfff8/go.mod h1:3Qf8k
513 github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= 561 github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
514 github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= 562 github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
515 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= 563 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
  564 +github.com/pelletier/go-toml v1.5.0 h1:5BakdOZdtKJ1FFk6QdL8iSGrMWsXgchNJcrnarjbmJQ=
  565 +github.com/pelletier/go-toml v1.5.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys=
516 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= 566 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
517 github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= 567 github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
  568 +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
518 github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= 569 github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
519 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= 570 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
520 github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= 571 github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
@@ -522,6 +573,7 @@ github.com/pierrec/lz4 v2.5.1+incompatible h1:Yq0up0149Hh5Ekhm/91lgkZuD1ZDnXNM26 @@ -522,6 +573,7 @@ github.com/pierrec/lz4 v2.5.1+incompatible h1:Yq0up0149Hh5Ekhm/91lgkZuD1ZDnXNM26
522 github.com/pierrec/lz4 v2.5.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= 573 github.com/pierrec/lz4 v2.5.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
523 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 574 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
524 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 575 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
  576 +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
525 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 577 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
526 github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= 578 github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
527 github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 579 github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -531,6 +583,7 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr @@ -531,6 +583,7 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr
531 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= 583 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
532 github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= 584 github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
533 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= 585 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
  586 +github.com/prometheus/client_golang v0.9.4/go.mod h1:oCXIBxdI62A4cR6aTRJCgetEjecSIYzOEaeAn4iYEpM=
534 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= 587 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
535 github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= 588 github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
536 github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= 589 github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
@@ -554,6 +607,7 @@ github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R @@ -554,6 +607,7 @@ github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R
554 github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= 607 github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
555 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= 608 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
556 github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= 609 github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
  610 +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
557 github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= 611 github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
558 github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= 612 github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
559 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= 613 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
@@ -565,6 +619,7 @@ github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03/go.mod h1:gRAiPF5C5N @@ -565,6 +619,7 @@ github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03/go.mod h1:gRAiPF5C5N
565 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= 619 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
566 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 620 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
567 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 621 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
  622 +github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
568 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= 623 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
569 github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= 624 github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
570 github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= 625 github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
@@ -572,6 +627,7 @@ github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrY @@ -572,6 +627,7 @@ github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrY
572 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= 627 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
573 github.com/segmentio/encoding v0.1.10/go.mod h1:RWhr02uzMB9gQC1x+MfYxedtmBibb9cZ6Vv9VxRSSbw= 628 github.com/segmentio/encoding v0.1.10/go.mod h1:RWhr02uzMB9gQC1x+MfYxedtmBibb9cZ6Vv9VxRSSbw=
574 github.com/segmentio/encoding v0.1.13/go.mod h1:RWhr02uzMB9gQC1x+MfYxedtmBibb9cZ6Vv9VxRSSbw= 629 github.com/segmentio/encoding v0.1.13/go.mod h1:RWhr02uzMB9gQC1x+MfYxedtmBibb9cZ6Vv9VxRSSbw=
  630 +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
575 github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= 631 github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
576 github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= 632 github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
577 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo= 633 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo=
@@ -580,7 +636,9 @@ github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4 @@ -580,7 +636,9 @@ github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4
580 github.com/shirou/gopsutil v0.0.0-20181107111621-48177ef5f880/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= 636 github.com/shirou/gopsutil v0.0.0-20181107111621-48177ef5f880/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
581 github.com/shirou/gopsutil v2.19.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= 637 github.com/shirou/gopsutil v2.19.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
582 github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= 638 github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
  639 +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
583 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= 640 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
  641 +github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
584 github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= 642 github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
585 github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= 643 github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
586 github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s= 644 github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s=
@@ -594,6 +652,7 @@ github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf/go.mod h1 @@ -594,6 +652,7 @@ github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf/go.mod h1
594 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= 652 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
595 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= 653 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
596 github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= 654 github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
  655 +github.com/smartystreets/goconvey v0.0.0-20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs=
597 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= 656 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
598 github.com/smartystreets/goconvey v0.0.0-20190710185942-9d28bd7c0945/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= 657 github.com/smartystreets/goconvey v0.0.0-20190710185942-9d28bd7c0945/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
599 github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= 658 github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
@@ -605,22 +664,29 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO @@ -605,22 +664,29 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO
605 github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 664 github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
606 github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= 665 github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
607 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= 666 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
  667 +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
  668 +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
608 github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= 669 github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
609 github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= 670 github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
610 github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= 671 github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
611 github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= 672 github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
612 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= 673 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
  674 +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
  675 +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
613 github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 676 github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
614 github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 677 github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
615 github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 678 github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
616 github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= 679 github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
617 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 680 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
  681 +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
  682 +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
618 github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= 683 github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU=
619 github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= 684 github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
620 github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= 685 github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
621 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 686 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
622 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 687 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
623 github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 688 github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
  689 +github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
624 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 690 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
625 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 691 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
626 github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= 692 github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
@@ -637,6 +703,7 @@ github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZ @@ -637,6 +703,7 @@ github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZ
637 github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= 703 github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls=
638 github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= 704 github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E=
639 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= 705 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
  706 +github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
640 github.com/tiptok/gocomm v1.0.5 h1:AQjR3aRTwMkMbtFG2amEMkzrVvxLZbddD9A5tlstBO4= 707 github.com/tiptok/gocomm v1.0.5 h1:AQjR3aRTwMkMbtFG2amEMkzrVvxLZbddD9A5tlstBO4=
641 github.com/tiptok/gocomm v1.0.5/go.mod h1:XuK31ipS1LxJKRb4fRLdyVyNzIyjQPqjLcdpQSw5ZG8= 708 github.com/tiptok/gocomm v1.0.5/go.mod h1:XuK31ipS1LxJKRb4fRLdyVyNzIyjQPqjLcdpQSw5ZG8=
642 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= 709 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
@@ -648,12 +715,15 @@ github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlp @@ -648,12 +715,15 @@ github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlp
648 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= 715 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
649 github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= 716 github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
650 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= 717 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
  718 +github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0=
651 github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= 719 github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
652 github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= 720 github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
  721 +github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI=
653 github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= 722 github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
654 github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= 723 github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
655 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= 724 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
656 github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= 725 github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
  726 +github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
657 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= 727 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
658 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 728 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
659 github.com/valyala/fasthttp v1.18.0 h1:IV0DdMlatq9QO1Cr6wGJPVW1sV1Q8HvZXAIcjorylyM= 729 github.com/valyala/fasthttp v1.18.0 h1:IV0DdMlatq9QO1Cr6wGJPVW1sV1Q8HvZXAIcjorylyM=
@@ -662,6 +732,12 @@ github.com/valyala/fastrand v1.0.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002 @@ -662,6 +732,12 @@ github.com/valyala/fastrand v1.0.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002
662 github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= 732 github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
663 github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= 733 github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
664 github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= 734 github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
  735 +github.com/vektah/dataloaden v0.2.0/go.mod h1:vxM6NuRlgiR0M6wbVTJeKp9vQIs81ZMfCYO+4yq/jbE=
  736 +github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U=
  737 +github.com/vektah/gqlparser v1.1.2 h1:ZsyLGn7/7jDNI+y4SEhI4yAxRChlv15pUHMjijT+e68=
  738 +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
  739 +github.com/vektah/gqlparser/v2 v2.1.0 h1:uiKJ+T5HMGGQM2kRKQ8Pxw8+Zq9qhhZhz/lieYvCMns=
  740 +github.com/vektah/gqlparser/v2 v2.1.0/go.mod h1:SyUiHgLATUR8BiYURfTirrTcGpcE+4XkV2se04Px1Ms=
665 github.com/vmihailenco/bufpool v0.1.5/go.mod h1:fL9i/PRTuS7AELqAHwSU1Zf1c70xhkhGe/cD5ud9pJk= 741 github.com/vmihailenco/bufpool v0.1.5/go.mod h1:fL9i/PRTuS7AELqAHwSU1Zf1c70xhkhGe/cD5ud9pJk=
666 github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94= 742 github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94=
667 github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ= 743 github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ=
@@ -677,6 +753,7 @@ github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vb @@ -677,6 +753,7 @@ github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vb
677 github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= 753 github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
678 github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= 754 github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
679 github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= 755 github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc=
  756 +github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
680 github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= 757 github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
681 github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= 758 github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
682 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= 759 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
@@ -701,6 +778,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de @@ -701,6 +778,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
701 github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= 778 github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU=
702 github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ= 779 github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ=
703 github.com/zouyx/agollo v0.0.0-20191114083447-dde9fc9f35b8/go.mod h1:S1cAa98KMFv4Sa8SbJ6ZtvOmf0VlgH0QJ1gXI0lBfBY= 780 github.com/zouyx/agollo v0.0.0-20191114083447-dde9fc9f35b8/go.mod h1:S1cAa98KMFv4Sa8SbJ6ZtvOmf0VlgH0QJ1gXI0lBfBY=
  781 +github.com/zsais/go-gin-prometheus v0.1.0/go.mod h1:Slirjzuz8uM8Cw0jmPNqbneoqcUtY2GGjn2bEd4NRLY=
704 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= 782 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
705 go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= 783 go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
706 go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= 784 go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
@@ -710,9 +788,12 @@ go.opentelemetry.io/otel v0.6.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofS @@ -710,9 +788,12 @@ go.opentelemetry.io/otel v0.6.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofS
710 go.opentelemetry.io/otel v0.14.0 h1:YFBEfjCk9MTjaytCNSUkp9Q8lF7QJezA06T71FbQxLQ= 788 go.opentelemetry.io/otel v0.14.0 h1:YFBEfjCk9MTjaytCNSUkp9Q8lF7QJezA06T71FbQxLQ=
711 go.opentelemetry.io/otel v0.14.0/go.mod h1:vH5xEuwy7Rts0GNtsCW3HYQoZDY+OmBJ6t1bFGGlxgw= 789 go.opentelemetry.io/otel v0.14.0/go.mod h1:vH5xEuwy7Rts0GNtsCW3HYQoZDY+OmBJ6t1bFGGlxgw=
712 go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= 790 go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
  791 +go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
713 go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= 792 go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
714 go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= 793 go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA=
715 go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= 794 go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
  795 +go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
  796 +go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
716 go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= 797 go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
717 go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= 798 go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
718 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= 799 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
@@ -726,6 +807,7 @@ golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACk @@ -726,6 +807,7 @@ golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACk
726 golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= 807 golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
727 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 808 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
728 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 809 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
  810 +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
729 golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= 811 golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
730 golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 812 golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
731 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 813 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -749,6 +831,7 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG @@ -749,6 +831,7 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG
749 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 831 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
750 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 832 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
751 golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 833 golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  834 +golang.org/x/net v0.0.0-20180404174746-b3c676e531a6/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
752 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 835 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
753 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 836 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
754 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 837 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -806,6 +889,7 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w @@ -806,6 +889,7 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
806 golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 889 golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
807 golang.org/x/sys v0.0.0-20190508220229-2d0786266e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 890 golang.org/x/sys v0.0.0-20190508220229-2d0786266e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
808 golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 891 golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  892 +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
809 golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 893 golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
810 golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 894 golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
811 golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 895 golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -814,6 +898,7 @@ golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7w @@ -814,6 +898,7 @@ golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7w
814 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 898 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
815 golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 899 golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
816 golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 900 golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  901 +golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
817 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 902 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
818 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 903 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
819 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 904 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -846,10 +931,12 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm @@ -846,10 +931,12 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
846 golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 931 golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
847 golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 932 golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
848 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 933 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
  934 +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
849 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 935 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
850 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 936 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
851 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 937 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
852 golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= 938 golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
  939 +golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
853 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= 940 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
854 golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= 941 golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
855 golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= 942 golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
@@ -858,6 +945,7 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn @@ -858,6 +945,7 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
858 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 945 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
859 golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 946 golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
860 golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 947 golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
  948 +golang.org/x/tools v0.0.0-20200114235610-7ae403b6b589/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
861 golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= 949 golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
862 golang.org/x/tools v0.0.0-20200410132612-ae9902aceb98/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 950 golang.org/x/tools v0.0.0-20200410132612-ae9902aceb98/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
863 golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 951 golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -903,6 +991,7 @@ google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4 @@ -903,6 +991,7 @@ google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4
903 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 991 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
904 gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= 992 gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
905 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 993 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
  994 +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
906 gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= 995 gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
907 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 996 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
908 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 997 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -915,8 +1004,11 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -915,8 +1004,11 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
915 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= 1004 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
916 gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= 1005 gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
917 gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= 1006 gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
  1007 +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
918 gopkg.in/go-playground/validator.v9 v9.29.1 h1:SvGtYmN60a5CVKTOzMSyfzWDeZRxRuGvRQyEAKbw1xc= 1008 gopkg.in/go-playground/validator.v9 v9.29.1 h1:SvGtYmN60a5CVKTOzMSyfzWDeZRxRuGvRQyEAKbw1xc=
919 gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= 1009 gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
  1010 +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
  1011 +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
920 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= 1012 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
921 gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 1013 gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
922 gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw= 1014 gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw=
@@ -930,6 +1022,7 @@ gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuv @@ -930,6 +1022,7 @@ gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuv
930 gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU= 1022 gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU=
931 gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= 1023 gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8=
932 gopkg.in/mgo.v2 v2.0.0-20160818020120-3f83fa500528/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= 1024 gopkg.in/mgo.v2 v2.0.0-20160818020120-3f83fa500528/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
  1025 +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
933 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= 1026 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
934 gopkg.in/ory-am/dockertest.v3 v3.3.4/go.mod h1:s9mmoLkaGeAh97qygnNj4xWkiN7e1SKekYC6CovU+ek= 1027 gopkg.in/ory-am/dockertest.v3 v3.3.4/go.mod h1:s9mmoLkaGeAh97qygnNj4xWkiN7e1SKekYC6CovU+ek=
935 gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= 1028 gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
@@ -970,3 +1063,5 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= @@ -970,3 +1063,5 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
970 sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= 1063 sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
971 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= 1064 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
972 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= 1065 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
  1066 +sourcegraph.com/sourcegraph/appdash v0.0.0-20180110180208-2cc67fd64755/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
  1067 +sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k=
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +type LoginCommand struct {
  10 + // 用户名
  11 + Username string `json:"username" valid:"Required"`
  12 + // 密码
  13 + Password string `json:"password" valid:"Required"`
  14 +}
  15 +
  16 +func (loginCommand *LoginCommand) Valid(validation *validation.Validation) {
  17 + //validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (loginCommand *LoginCommand) ValidateCommand() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(loginCommand)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + for _, validErr := range valid.Errors {
  28 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  29 + }
  30 + }
  31 + return nil
  32 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +type ProfileCommand struct {
  10 + UserId int64 `json:"userId" valid:"Required"`
  11 +}
  12 +
  13 +func (profileCommand *ProfileCommand) Valid(validation *validation.Validation) {
  14 + validation.SetError("CustomValid", "未实现的自定义认证")
  15 +}
  16 +
  17 +func (profileCommand *ProfileCommand) ValidateCommand() error {
  18 + valid := validation.Validation{}
  19 + b, err := valid.Valid(profileCommand)
  20 + if err != nil {
  21 + return err
  22 + }
  23 + if !b {
  24 + for _, validErr := range valid.Errors {
  25 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  26 + }
  27 + }
  28 + return nil
  29 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +type RefreshCommand struct {
  10 + RefreshToken string `json:"refreshToken" valid:"Required"`
  11 +}
  12 +
  13 +func (refreshCommand *RefreshCommand) Valid(validation *validation.Validation) {
  14 + //validation.SetError("CustomValid", "未实现的自定义认证")
  15 +}
  16 +
  17 +func (refreshCommand *RefreshCommand) ValidateCommand() error {
  18 + valid := validation.Validation{}
  19 + b, err := valid.Valid(refreshCommand)
  20 + if err != nil {
  21 + return err
  22 + }
  23 + if !b {
  24 + for _, validErr := range valid.Errors {
  25 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  26 + }
  27 + }
  28 + return nil
  29 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/tiptok/gocomm/common"
  7 + "github.com/tiptok/godevp/pkg/application/auth/command"
  8 + "github.com/tiptok/godevp/pkg/application/factory"
  9 + domainx "github.com/tiptok/godevp/pkg/domain"
  10 + domain "github.com/tiptok/godevp/pkg/domain/users"
  11 +)
  12 +
  13 +// 认证服务
  14 +type AuthService struct {
  15 +}
  16 +
  17 +// 登录
  18 +func (authService *AuthService) Login(loginCommand *command.LoginCommand) (interface{}, error) {
  19 + if err := loginCommand.ValidateCommand(); err != nil {
  20 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  21 + }
  22 + transactionContext, err := factory.CreateTransactionContext(nil)
  23 + if err != nil {
  24 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  25 + }
  26 + if err := transactionContext.StartTransaction(); err != nil {
  27 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  28 + }
  29 + defer func() {
  30 + transactionContext.RollbackTransaction()
  31 + }()
  32 +
  33 + usersRepository, _ := factory.CreateUsersRepository(map[string]interface{}{
  34 + "transactionContext": transactionContext,
  35 + })
  36 + var user *domain.Users
  37 + if user, err = usersRepository.FindOne(map[string]interface{}{"phone": loginCommand.Username}); err != nil || user == nil {
  38 + return nil, application.ThrowError(application.BUSINESS_ERROR, "用户不存在")
  39 + }
  40 + if user.Passwd != loginCommand.Password {
  41 + return nil, application.ThrowError(application.BUSINESS_ERROR, "密码有误")
  42 + }
  43 + if user.Status != 1 {
  44 + return nil, application.ThrowError(application.BUSINESS_ERROR, "该账号已被禁用")
  45 + }
  46 +
  47 + token, _ := common.GenerateToken(fmt.Sprintf("%v", user.Id), user.Passwd, common.WithExpire(domainx.TokenExpire), common.WithAddData(map[string]interface{}{"UserName": user.Name, "Phone": user.Phone}))
  48 + refreshToken, _ := common.GenerateToken(fmt.Sprintf("%v", user.Id), user.Passwd, common.WithExpire(domainx.RefreshTokenExpire), common.WithAddData(map[string]interface{}{"UserName": user.Name, "Phone": user.Phone}))
  49 + rsp := map[string]interface{}{
  50 + "accessToken": token,
  51 + "refreshToken": refreshToken,
  52 + "expiresIn": domainx.TokenExpire,
  53 + }
  54 +
  55 + if err := transactionContext.CommitTransaction(); err != nil {
  56 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  57 + }
  58 + return rsp, nil
  59 +}
  60 +
  61 +// 获得当前用户数据
  62 +func (authService *AuthService) Profile(profileCommand *command.ProfileCommand) (interface{}, error) {
  63 + if err := profileCommand.ValidateCommand(); err != nil {
  64 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  65 + }
  66 + transactionContext, err := factory.CreateTransactionContext(nil)
  67 + if err != nil {
  68 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  69 + }
  70 + if err := transactionContext.StartTransaction(); err != nil {
  71 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  72 + }
  73 + defer func() {
  74 + transactionContext.RollbackTransaction()
  75 + }()
  76 + if err := transactionContext.CommitTransaction(); err != nil {
  77 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  78 + }
  79 + return nil, nil
  80 +}
  81 +
  82 +// 刷新权限
  83 +func (authService *AuthService) Refresh(refreshCommand *command.RefreshCommand) (interface{}, error) {
  84 + if err := refreshCommand.ValidateCommand(); err != nil {
  85 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  86 + }
  87 + claim, e := common.ParseJWTToken(refreshCommand.RefreshToken)
  88 + if e != nil {
  89 + return nil, application.ThrowError(application.BUSINESS_ERROR, "权限过期,请重新登录")
  90 + }
  91 + return authService.Login(&command.LoginCommand{Username: (claim.AddData["Phone"]).(string), Password: claim.Password})
  92 +}
  93 +
  94 +func NewAuthService(options map[string]interface{}) *AuthService {
  95 + newAuthService := &AuthService{}
  96 + return newAuthService
  97 +}
@@ -38,6 +38,14 @@ func (users *Users) Identify() interface{} { @@ -38,6 +38,14 @@ func (users *Users) Identify() interface{} {
38 return users.Id 38 return users.Id
39 } 39 }
40 40
  41 +func (users *Users) GetRoles() []int {
  42 + var ret []int
  43 + for _, v := range users.Roles {
  44 + ret = append(ret, int(v))
  45 + }
  46 + return ret
  47 +}
  48 +
41 func (users *Users) Update(data map[string]interface{}) error { 49 func (users *Users) Update(data map[string]interface{}) error {
42 if Id, ok := data["Id"]; ok { 50 if Id, ok := data["Id"]; ok {
43 users.Id = Id.(int64) 51 users.Id = Id.(int64)
  1 +package controllers
  2 +
  3 +import (
  4 + "encoding/json"
  5 +
  6 + "github.com/astaxie/beego"
  7 + "github.com/linmadan/egglib-go/web/beego/utils"
  8 + "github.com/tiptok/godevp/pkg/application/auth/command"
  9 + "github.com/tiptok/godevp/pkg/application/auth/service"
  10 +)
  11 +
  12 +type AuthController struct {
  13 + beego.Controller
  14 +}
  15 +
  16 +func (controller *AuthController) Login() {
  17 + authService := service.NewAuthService(nil)
  18 + loginCommand := &command.LoginCommand{}
  19 + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), loginCommand)
  20 + data, err := authService.Login(loginCommand)
  21 + var response utils.JsonResponse
  22 + if err != nil {
  23 + response = utils.ResponseError(controller.Ctx, err)
  24 + } else {
  25 + response = utils.ResponseData(controller.Ctx, data)
  26 + }
  27 + controller.Data["json"] = response
  28 + controller.ServeJSON()
  29 +}
  30 +
  31 +func (controller *AuthController) Profile() {
  32 + authService := service.NewAuthService(nil)
  33 + profileCommand := &command.ProfileCommand{}
  34 + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), profileCommand)
  35 + data, err := authService.Profile(profileCommand)
  36 + var response utils.JsonResponse
  37 + if err != nil {
  38 + response = utils.ResponseError(controller.Ctx, err)
  39 + } else {
  40 + response = utils.ResponseData(controller.Ctx, data)
  41 + }
  42 + controller.Data["json"] = response
  43 + controller.ServeJSON()
  44 +}
  45 +
  46 +func (controller *AuthController) Refresh() {
  47 + authService := service.NewAuthService(nil)
  48 + refreshCommand := &command.RefreshCommand{}
  49 + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), refreshCommand)
  50 + data, err := authService.Refresh(refreshCommand)
  51 + var response utils.JsonResponse
  52 + if err != nil {
  53 + response = utils.ResponseError(controller.Ctx, err)
  54 + } else {
  55 + response = utils.ResponseData(controller.Ctx, data)
  56 + }
  57 + controller.Data["json"] = response
  58 + controller.ServeJSON()
  59 +}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/astaxie/beego"
  5 + "github.com/tiptok/godevp/pkg/port/beego/controllers"
  6 +)
  7 +
  8 +func init() {
  9 + beego.Router("/v1/auth/login", &controllers.AuthController{}, "Post:Login")
  10 + beego.Router("/v1/auth/profile", &controllers.AuthController{}, "Post:Profile")
  11 + beego.Router("/v1/auth/refresh", &controllers.AuthController{}, "Post:Refresh")
  12 +}
  1 +# Where are all the schema files located? globs are supported eg src/**/*.graphqls
  2 +schema:
  3 + - graph/*.graphqls
  4 +
  5 +# Where should the generated server code go?
  6 +exec:
  7 + filename: graph/generated/generated.go
  8 + package: generated
  9 +
  10 +# Uncomment to enable federation
  11 +# federation:
  12 +# filename: graph/generated/federation.go
  13 +# package: generated
  14 +
  15 +# Where should any generated models go?
  16 +model:
  17 + filename: graph/model/models_gen.go
  18 + package: model
  19 +
  20 +# Where should the resolver implementations go?
  21 +resolver:
  22 + layout: follow-schema
  23 + dir: graph
  24 + package: graph
  25 +
  26 +# Optional: turn on use `gqlgen:"fieldName"` tags in your models
  27 +# struct_tag: json
  28 +
  29 +# Optional: turn on to use []Thing instead of []*Thing
  30 +# omit_slice_element_pointers: false
  31 +
  32 +# Optional: set to speed up generation time by not performing a final validation pass.
  33 +# skip_validation: true
  34 +
  35 +# gqlgen will search for any type names in the schema in these go packages
  36 +# if they match it will use them, otherwise it will generate them.
  37 +autobind:
  38 + - "github.com/tiptok/godevp/pkg/port/graphql/graph/model"
  39 +
  40 +# This section declares type mapping between the GraphQL and go type systems
  41 +#
  42 +# The first line in each type will be used as defaults for resolver arguments and
  43 +# modelgen, the others will be allowed when binding to fields. Configure them to
  44 +# your liking
  45 +models:
  46 + ID:
  47 + model:
  48 + - github.com/99designs/gqlgen/graphql.ID
  49 + - github.com/99designs/gqlgen/graphql.Int
  50 + - github.com/99designs/gqlgen/graphql.Int64
  51 + - github.com/99designs/gqlgen/graphql.Int32
  52 + Int:
  53 + model:
  54 + - github.com/99designs/gqlgen/graphql.Int
  55 + - github.com/99designs/gqlgen/graphql.Int64
  56 + - github.com/99designs/gqlgen/graphql.Int32
  57 + Date:
  58 + model: github.com/Laisky/laisky-blog-graphql/types.Datetime
  1 +// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.
  2 +
  3 +package generated
  4 +
  5 +import (
  6 + "bytes"
  7 + "context"
  8 + "errors"
  9 + "strconv"
  10 + "sync"
  11 + "sync/atomic"
  12 +
  13 + "github.com/99designs/gqlgen/graphql"
  14 + "github.com/99designs/gqlgen/graphql/introspection"
  15 + "github.com/tiptok/godevp/pkg/port/graphql/graph/model"
  16 + gqlparser "github.com/vektah/gqlparser/v2"
  17 + "github.com/vektah/gqlparser/v2/ast"
  18 +)
  19 +
  20 +// region ************************** generated!.gotpl **************************
  21 +
  22 +// NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.
  23 +func NewExecutableSchema(cfg Config) graphql.ExecutableSchema {
  24 + return &executableSchema{
  25 + resolvers: cfg.Resolvers,
  26 + directives: cfg.Directives,
  27 + complexity: cfg.Complexity,
  28 + }
  29 +}
  30 +
  31 +type Config struct {
  32 + Resolvers ResolverRoot
  33 + Directives DirectiveRoot
  34 + Complexity ComplexityRoot
  35 +}
  36 +
  37 +type ResolverRoot interface {
  38 + Mutation() MutationResolver
  39 + Query() QueryResolver
  40 + Users() UsersResolver
  41 +}
  42 +
  43 +type DirectiveRoot struct {
  44 +}
  45 +
  46 +type ComplexityRoot struct {
  47 + Mutation struct {
  48 + CreateUsers func(childComplexity int, input model.CreateUsersInput) int
  49 + RemoveUsers func(childComplexity int, input model.RemoveUsersInput) int
  50 + UpdateUsers func(childComplexity int, input model.UpdateUsersInput) int
  51 + }
  52 +
  53 + Query struct {
  54 + FindUsers func(childComplexity int, input model.ListUsersInput) int
  55 + GetUsers func(childComplexity int, input model.GetUsersInput) int
  56 + }
  57 +
  58 + Role struct {
  59 + CreateTime func(childComplexity int) int
  60 + ID func(childComplexity int) int
  61 + ParentID func(childComplexity int) int
  62 + RoleName func(childComplexity int) int
  63 + UpdateTime func(childComplexity int) int
  64 + }
  65 +
  66 + Users struct {
  67 + AdminType func(childComplexity int) int
  68 + CreateTime func(childComplexity int) int
  69 + Name func(childComplexity int) int
  70 + Phone func(childComplexity int) int
  71 + Roles func(childComplexity int) int
  72 + Status func(childComplexity int) int
  73 + UpdateTime func(childComplexity int) int
  74 + }
  75 +}
  76 +
  77 +type MutationResolver interface {
  78 + CreateUsers(ctx context.Context, input model.CreateUsersInput) (*model.Users, error)
  79 + RemoveUsers(ctx context.Context, input model.RemoveUsersInput) (*model.Users, error)
  80 + UpdateUsers(ctx context.Context, input model.UpdateUsersInput) (*model.Users, error)
  81 +}
  82 +type QueryResolver interface {
  83 + GetUsers(ctx context.Context, input model.GetUsersInput) (*model.Users, error)
  84 + FindUsers(ctx context.Context, input model.ListUsersInput) ([]*model.Users, error)
  85 +}
  86 +type UsersResolver interface {
  87 + Roles(ctx context.Context, obj *model.Users) ([]*model.Role, error)
  88 +}
  89 +
  90 +type executableSchema struct {
  91 + resolvers ResolverRoot
  92 + directives DirectiveRoot
  93 + complexity ComplexityRoot
  94 +}
  95 +
  96 +func (e *executableSchema) Schema() *ast.Schema {
  97 + return parsedSchema
  98 +}
  99 +
  100 +func (e *executableSchema) Complexity(typeName, field string, childComplexity int, rawArgs map[string]interface{}) (int, bool) {
  101 + ec := executionContext{nil, e}
  102 + _ = ec
  103 + switch typeName + "." + field {
  104 +
  105 + case "Mutation.createUsers":
  106 + if e.complexity.Mutation.CreateUsers == nil {
  107 + break
  108 + }
  109 +
  110 + args, err := ec.field_Mutation_createUsers_args(context.TODO(), rawArgs)
  111 + if err != nil {
  112 + return 0, false
  113 + }
  114 +
  115 + return e.complexity.Mutation.CreateUsers(childComplexity, args["input"].(model.CreateUsersInput)), true
  116 +
  117 + case "Mutation.removeUsers":
  118 + if e.complexity.Mutation.RemoveUsers == nil {
  119 + break
  120 + }
  121 +
  122 + args, err := ec.field_Mutation_removeUsers_args(context.TODO(), rawArgs)
  123 + if err != nil {
  124 + return 0, false
  125 + }
  126 +
  127 + return e.complexity.Mutation.RemoveUsers(childComplexity, args["input"].(model.RemoveUsersInput)), true
  128 +
  129 + case "Mutation.updateUsers":
  130 + if e.complexity.Mutation.UpdateUsers == nil {
  131 + break
  132 + }
  133 +
  134 + args, err := ec.field_Mutation_updateUsers_args(context.TODO(), rawArgs)
  135 + if err != nil {
  136 + return 0, false
  137 + }
  138 +
  139 + return e.complexity.Mutation.UpdateUsers(childComplexity, args["input"].(model.UpdateUsersInput)), true
  140 +
  141 + case "Query.findUsers":
  142 + if e.complexity.Query.FindUsers == nil {
  143 + break
  144 + }
  145 +
  146 + args, err := ec.field_Query_findUsers_args(context.TODO(), rawArgs)
  147 + if err != nil {
  148 + return 0, false
  149 + }
  150 +
  151 + return e.complexity.Query.FindUsers(childComplexity, args["input"].(model.ListUsersInput)), true
  152 +
  153 + case "Query.getUsers":
  154 + if e.complexity.Query.GetUsers == nil {
  155 + break
  156 + }
  157 +
  158 + args, err := ec.field_Query_getUsers_args(context.TODO(), rawArgs)
  159 + if err != nil {
  160 + return 0, false
  161 + }
  162 +
  163 + return e.complexity.Query.GetUsers(childComplexity, args["input"].(model.GetUsersInput)), true
  164 +
  165 + case "Role.createTime":
  166 + if e.complexity.Role.CreateTime == nil {
  167 + break
  168 + }
  169 +
  170 + return e.complexity.Role.CreateTime(childComplexity), true
  171 +
  172 + case "Role.id":
  173 + if e.complexity.Role.ID == nil {
  174 + break
  175 + }
  176 +
  177 + return e.complexity.Role.ID(childComplexity), true
  178 +
  179 + case "Role.parentId":
  180 + if e.complexity.Role.ParentID == nil {
  181 + break
  182 + }
  183 +
  184 + return e.complexity.Role.ParentID(childComplexity), true
  185 +
  186 + case "Role.roleName":
  187 + if e.complexity.Role.RoleName == nil {
  188 + break
  189 + }
  190 +
  191 + return e.complexity.Role.RoleName(childComplexity), true
  192 +
  193 + case "Role.updateTime":
  194 + if e.complexity.Role.UpdateTime == nil {
  195 + break
  196 + }
  197 +
  198 + return e.complexity.Role.UpdateTime(childComplexity), true
  199 +
  200 + case "Users.adminType":
  201 + if e.complexity.Users.AdminType == nil {
  202 + break
  203 + }
  204 +
  205 + return e.complexity.Users.AdminType(childComplexity), true
  206 +
  207 + case "Users.createTime":
  208 + if e.complexity.Users.CreateTime == nil {
  209 + break
  210 + }
  211 +
  212 + return e.complexity.Users.CreateTime(childComplexity), true
  213 +
  214 + case "Users.name":
  215 + if e.complexity.Users.Name == nil {
  216 + break
  217 + }
  218 +
  219 + return e.complexity.Users.Name(childComplexity), true
  220 +
  221 + case "Users.phone":
  222 + if e.complexity.Users.Phone == nil {
  223 + break
  224 + }
  225 +
  226 + return e.complexity.Users.Phone(childComplexity), true
  227 +
  228 + case "Users.roles":
  229 + if e.complexity.Users.Roles == nil {
  230 + break
  231 + }
  232 +
  233 + return e.complexity.Users.Roles(childComplexity), true
  234 +
  235 + case "Users.status":
  236 + if e.complexity.Users.Status == nil {
  237 + break
  238 + }
  239 +
  240 + return e.complexity.Users.Status(childComplexity), true
  241 +
  242 + case "Users.updateTime":
  243 + if e.complexity.Users.UpdateTime == nil {
  244 + break
  245 + }
  246 +
  247 + return e.complexity.Users.UpdateTime(childComplexity), true
  248 +
  249 + }
  250 + return 0, false
  251 +}
  252 +
  253 +func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
  254 + rc := graphql.GetOperationContext(ctx)
  255 + ec := executionContext{rc, e}
  256 + first := true
  257 +
  258 + switch rc.Operation.Operation {
  259 + case ast.Query:
  260 + return func(ctx context.Context) *graphql.Response {
  261 + if !first {
  262 + return nil
  263 + }
  264 + first = false
  265 + data := ec._Query(ctx, rc.Operation.SelectionSet)
  266 + var buf bytes.Buffer
  267 + data.MarshalGQL(&buf)
  268 +
  269 + return &graphql.Response{
  270 + Data: buf.Bytes(),
  271 + }
  272 + }
  273 + case ast.Mutation:
  274 + return func(ctx context.Context) *graphql.Response {
  275 + if !first {
  276 + return nil
  277 + }
  278 + first = false
  279 + data := ec._Mutation(ctx, rc.Operation.SelectionSet)
  280 + var buf bytes.Buffer
  281 + data.MarshalGQL(&buf)
  282 +
  283 + return &graphql.Response{
  284 + Data: buf.Bytes(),
  285 + }
  286 + }
  287 +
  288 + default:
  289 + return graphql.OneShot(graphql.ErrorResponse(ctx, "unsupported GraphQL operation"))
  290 + }
  291 +}
  292 +
  293 +type executionContext struct {
  294 + *graphql.OperationContext
  295 + *executableSchema
  296 +}
  297 +
  298 +func (ec *executionContext) introspectSchema() (*introspection.Schema, error) {
  299 + if ec.DisableIntrospection {
  300 + return nil, errors.New("introspection disabled")
  301 + }
  302 + return introspection.WrapSchema(parsedSchema), nil
  303 +}
  304 +
  305 +func (ec *executionContext) introspectType(name string) (*introspection.Type, error) {
  306 + if ec.DisableIntrospection {
  307 + return nil, errors.New("introspection disabled")
  308 + }
  309 + return introspection.WrapTypeFromDef(parsedSchema, parsedSchema.Types[name]), nil
  310 +}
  311 +
  312 +var sources = []*ast.Source{
  313 + {Name: "graph/schema.graphqls", Input: `## type
  314 +type Users{
  315 + name: String
  316 + phone: String
  317 + roles: [Role!]
  318 + status: Int
  319 + adminType: Int
  320 + createTime: String
  321 + updateTime: String
  322 +}
  323 +type Role{
  324 + id: Int
  325 + roleName: String
  326 + parentId: Int
  327 + createTime: String
  328 + updateTime: String
  329 +}
  330 +
  331 +## user input
  332 +input createUsersInput{
  333 + name: String!
  334 + phone: String!
  335 +}
  336 +input updateUsersInput{
  337 + id: Int!
  338 + name: String
  339 +}
  340 +input removeUsersInput{
  341 + id: Int!
  342 +}
  343 +input getUsersInput{
  344 + id: Int!
  345 +}
  346 +input listUsersInput{
  347 + offset: Int!
  348 + limit: Int!
  349 +}
  350 +
  351 +type Query {
  352 + getUsers(input : getUsersInput!): Users!
  353 + findUsers(input : listUsersInput!): [Users!]
  354 +}
  355 +
  356 +type Mutation{
  357 + createUsers(input : createUsersInput!): Users!
  358 + removeUsers(input : removeUsersInput!): Users!
  359 + updateUsers(input : updateUsersInput!): Users!
  360 +}`, BuiltIn: false},
  361 +}
  362 +var parsedSchema = gqlparser.MustLoadSchema(sources...)
  363 +
  364 +// endregion ************************** generated!.gotpl **************************
  365 +
  366 +// region ***************************** args.gotpl *****************************
  367 +
  368 +func (ec *executionContext) field_Mutation_createUsers_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  369 + var err error
  370 + args := map[string]interface{}{}
  371 + var arg0 model.CreateUsersInput
  372 + if tmp, ok := rawArgs["input"]; ok {
  373 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
  374 + arg0, err = ec.unmarshalNcreateUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐCreateUsersInput(ctx, tmp)
  375 + if err != nil {
  376 + return nil, err
  377 + }
  378 + }
  379 + args["input"] = arg0
  380 + return args, nil
  381 +}
  382 +
  383 +func (ec *executionContext) field_Mutation_removeUsers_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  384 + var err error
  385 + args := map[string]interface{}{}
  386 + var arg0 model.RemoveUsersInput
  387 + if tmp, ok := rawArgs["input"]; ok {
  388 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
  389 + arg0, err = ec.unmarshalNremoveUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐRemoveUsersInput(ctx, tmp)
  390 + if err != nil {
  391 + return nil, err
  392 + }
  393 + }
  394 + args["input"] = arg0
  395 + return args, nil
  396 +}
  397 +
  398 +func (ec *executionContext) field_Mutation_updateUsers_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  399 + var err error
  400 + args := map[string]interface{}{}
  401 + var arg0 model.UpdateUsersInput
  402 + if tmp, ok := rawArgs["input"]; ok {
  403 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
  404 + arg0, err = ec.unmarshalNupdateUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUpdateUsersInput(ctx, tmp)
  405 + if err != nil {
  406 + return nil, err
  407 + }
  408 + }
  409 + args["input"] = arg0
  410 + return args, nil
  411 +}
  412 +
  413 +func (ec *executionContext) field_Query___type_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  414 + var err error
  415 + args := map[string]interface{}{}
  416 + var arg0 string
  417 + if tmp, ok := rawArgs["name"]; ok {
  418 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("name"))
  419 + arg0, err = ec.unmarshalNString2string(ctx, tmp)
  420 + if err != nil {
  421 + return nil, err
  422 + }
  423 + }
  424 + args["name"] = arg0
  425 + return args, nil
  426 +}
  427 +
  428 +func (ec *executionContext) field_Query_findUsers_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  429 + var err error
  430 + args := map[string]interface{}{}
  431 + var arg0 model.ListUsersInput
  432 + if tmp, ok := rawArgs["input"]; ok {
  433 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
  434 + arg0, err = ec.unmarshalNlistUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐListUsersInput(ctx, tmp)
  435 + if err != nil {
  436 + return nil, err
  437 + }
  438 + }
  439 + args["input"] = arg0
  440 + return args, nil
  441 +}
  442 +
  443 +func (ec *executionContext) field_Query_getUsers_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  444 + var err error
  445 + args := map[string]interface{}{}
  446 + var arg0 model.GetUsersInput
  447 + if tmp, ok := rawArgs["input"]; ok {
  448 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
  449 + arg0, err = ec.unmarshalNgetUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐGetUsersInput(ctx, tmp)
  450 + if err != nil {
  451 + return nil, err
  452 + }
  453 + }
  454 + args["input"] = arg0
  455 + return args, nil
  456 +}
  457 +
  458 +func (ec *executionContext) field___Type_enumValues_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  459 + var err error
  460 + args := map[string]interface{}{}
  461 + var arg0 bool
  462 + if tmp, ok := rawArgs["includeDeprecated"]; ok {
  463 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("includeDeprecated"))
  464 + arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp)
  465 + if err != nil {
  466 + return nil, err
  467 + }
  468 + }
  469 + args["includeDeprecated"] = arg0
  470 + return args, nil
  471 +}
  472 +
  473 +func (ec *executionContext) field___Type_fields_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
  474 + var err error
  475 + args := map[string]interface{}{}
  476 + var arg0 bool
  477 + if tmp, ok := rawArgs["includeDeprecated"]; ok {
  478 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("includeDeprecated"))
  479 + arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp)
  480 + if err != nil {
  481 + return nil, err
  482 + }
  483 + }
  484 + args["includeDeprecated"] = arg0
  485 + return args, nil
  486 +}
  487 +
  488 +// endregion ***************************** args.gotpl *****************************
  489 +
  490 +// region ************************** directives.gotpl **************************
  491 +
  492 +// endregion ************************** directives.gotpl **************************
  493 +
  494 +// region **************************** field.gotpl *****************************
  495 +
  496 +func (ec *executionContext) _Mutation_createUsers(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  497 + defer func() {
  498 + if r := recover(); r != nil {
  499 + ec.Error(ctx, ec.Recover(ctx, r))
  500 + ret = graphql.Null
  501 + }
  502 + }()
  503 + fc := &graphql.FieldContext{
  504 + Object: "Mutation",
  505 + Field: field,
  506 + Args: nil,
  507 + IsMethod: true,
  508 + IsResolver: true,
  509 + }
  510 +
  511 + ctx = graphql.WithFieldContext(ctx, fc)
  512 + rawArgs := field.ArgumentMap(ec.Variables)
  513 + args, err := ec.field_Mutation_createUsers_args(ctx, rawArgs)
  514 + if err != nil {
  515 + ec.Error(ctx, err)
  516 + return graphql.Null
  517 + }
  518 + fc.Args = args
  519 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  520 + ctx = rctx // use context from middleware stack in children
  521 + return ec.resolvers.Mutation().CreateUsers(rctx, args["input"].(model.CreateUsersInput))
  522 + })
  523 + if err != nil {
  524 + ec.Error(ctx, err)
  525 + return graphql.Null
  526 + }
  527 + if resTmp == nil {
  528 + if !graphql.HasFieldError(ctx, fc) {
  529 + ec.Errorf(ctx, "must not be null")
  530 + }
  531 + return graphql.Null
  532 + }
  533 + res := resTmp.(*model.Users)
  534 + fc.Result = res
  535 + return ec.marshalNUsers2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx, field.Selections, res)
  536 +}
  537 +
  538 +func (ec *executionContext) _Mutation_removeUsers(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  539 + defer func() {
  540 + if r := recover(); r != nil {
  541 + ec.Error(ctx, ec.Recover(ctx, r))
  542 + ret = graphql.Null
  543 + }
  544 + }()
  545 + fc := &graphql.FieldContext{
  546 + Object: "Mutation",
  547 + Field: field,
  548 + Args: nil,
  549 + IsMethod: true,
  550 + IsResolver: true,
  551 + }
  552 +
  553 + ctx = graphql.WithFieldContext(ctx, fc)
  554 + rawArgs := field.ArgumentMap(ec.Variables)
  555 + args, err := ec.field_Mutation_removeUsers_args(ctx, rawArgs)
  556 + if err != nil {
  557 + ec.Error(ctx, err)
  558 + return graphql.Null
  559 + }
  560 + fc.Args = args
  561 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  562 + ctx = rctx // use context from middleware stack in children
  563 + return ec.resolvers.Mutation().RemoveUsers(rctx, args["input"].(model.RemoveUsersInput))
  564 + })
  565 + if err != nil {
  566 + ec.Error(ctx, err)
  567 + return graphql.Null
  568 + }
  569 + if resTmp == nil {
  570 + if !graphql.HasFieldError(ctx, fc) {
  571 + ec.Errorf(ctx, "must not be null")
  572 + }
  573 + return graphql.Null
  574 + }
  575 + res := resTmp.(*model.Users)
  576 + fc.Result = res
  577 + return ec.marshalNUsers2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx, field.Selections, res)
  578 +}
  579 +
  580 +func (ec *executionContext) _Mutation_updateUsers(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  581 + defer func() {
  582 + if r := recover(); r != nil {
  583 + ec.Error(ctx, ec.Recover(ctx, r))
  584 + ret = graphql.Null
  585 + }
  586 + }()
  587 + fc := &graphql.FieldContext{
  588 + Object: "Mutation",
  589 + Field: field,
  590 + Args: nil,
  591 + IsMethod: true,
  592 + IsResolver: true,
  593 + }
  594 +
  595 + ctx = graphql.WithFieldContext(ctx, fc)
  596 + rawArgs := field.ArgumentMap(ec.Variables)
  597 + args, err := ec.field_Mutation_updateUsers_args(ctx, rawArgs)
  598 + if err != nil {
  599 + ec.Error(ctx, err)
  600 + return graphql.Null
  601 + }
  602 + fc.Args = args
  603 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  604 + ctx = rctx // use context from middleware stack in children
  605 + return ec.resolvers.Mutation().UpdateUsers(rctx, args["input"].(model.UpdateUsersInput))
  606 + })
  607 + if err != nil {
  608 + ec.Error(ctx, err)
  609 + return graphql.Null
  610 + }
  611 + if resTmp == nil {
  612 + if !graphql.HasFieldError(ctx, fc) {
  613 + ec.Errorf(ctx, "must not be null")
  614 + }
  615 + return graphql.Null
  616 + }
  617 + res := resTmp.(*model.Users)
  618 + fc.Result = res
  619 + return ec.marshalNUsers2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx, field.Selections, res)
  620 +}
  621 +
  622 +func (ec *executionContext) _Query_getUsers(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  623 + defer func() {
  624 + if r := recover(); r != nil {
  625 + ec.Error(ctx, ec.Recover(ctx, r))
  626 + ret = graphql.Null
  627 + }
  628 + }()
  629 + fc := &graphql.FieldContext{
  630 + Object: "Query",
  631 + Field: field,
  632 + Args: nil,
  633 + IsMethod: true,
  634 + IsResolver: true,
  635 + }
  636 +
  637 + ctx = graphql.WithFieldContext(ctx, fc)
  638 + rawArgs := field.ArgumentMap(ec.Variables)
  639 + args, err := ec.field_Query_getUsers_args(ctx, rawArgs)
  640 + if err != nil {
  641 + ec.Error(ctx, err)
  642 + return graphql.Null
  643 + }
  644 + fc.Args = args
  645 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  646 + ctx = rctx // use context from middleware stack in children
  647 + return ec.resolvers.Query().GetUsers(rctx, args["input"].(model.GetUsersInput))
  648 + })
  649 + if err != nil {
  650 + ec.Error(ctx, err)
  651 + return graphql.Null
  652 + }
  653 + if resTmp == nil {
  654 + if !graphql.HasFieldError(ctx, fc) {
  655 + ec.Errorf(ctx, "must not be null")
  656 + }
  657 + return graphql.Null
  658 + }
  659 + res := resTmp.(*model.Users)
  660 + fc.Result = res
  661 + return ec.marshalNUsers2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx, field.Selections, res)
  662 +}
  663 +
  664 +func (ec *executionContext) _Query_findUsers(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  665 + defer func() {
  666 + if r := recover(); r != nil {
  667 + ec.Error(ctx, ec.Recover(ctx, r))
  668 + ret = graphql.Null
  669 + }
  670 + }()
  671 + fc := &graphql.FieldContext{
  672 + Object: "Query",
  673 + Field: field,
  674 + Args: nil,
  675 + IsMethod: true,
  676 + IsResolver: true,
  677 + }
  678 +
  679 + ctx = graphql.WithFieldContext(ctx, fc)
  680 + rawArgs := field.ArgumentMap(ec.Variables)
  681 + args, err := ec.field_Query_findUsers_args(ctx, rawArgs)
  682 + if err != nil {
  683 + ec.Error(ctx, err)
  684 + return graphql.Null
  685 + }
  686 + fc.Args = args
  687 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  688 + ctx = rctx // use context from middleware stack in children
  689 + return ec.resolvers.Query().FindUsers(rctx, args["input"].(model.ListUsersInput))
  690 + })
  691 + if err != nil {
  692 + ec.Error(ctx, err)
  693 + return graphql.Null
  694 + }
  695 + if resTmp == nil {
  696 + return graphql.Null
  697 + }
  698 + res := resTmp.([]*model.Users)
  699 + fc.Result = res
  700 + return ec.marshalOUsers2ᚕᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsersᚄ(ctx, field.Selections, res)
  701 +}
  702 +
  703 +func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  704 + defer func() {
  705 + if r := recover(); r != nil {
  706 + ec.Error(ctx, ec.Recover(ctx, r))
  707 + ret = graphql.Null
  708 + }
  709 + }()
  710 + fc := &graphql.FieldContext{
  711 + Object: "Query",
  712 + Field: field,
  713 + Args: nil,
  714 + IsMethod: true,
  715 + IsResolver: false,
  716 + }
  717 +
  718 + ctx = graphql.WithFieldContext(ctx, fc)
  719 + rawArgs := field.ArgumentMap(ec.Variables)
  720 + args, err := ec.field_Query___type_args(ctx, rawArgs)
  721 + if err != nil {
  722 + ec.Error(ctx, err)
  723 + return graphql.Null
  724 + }
  725 + fc.Args = args
  726 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  727 + ctx = rctx // use context from middleware stack in children
  728 + return ec.introspectType(args["name"].(string))
  729 + })
  730 + if err != nil {
  731 + ec.Error(ctx, err)
  732 + return graphql.Null
  733 + }
  734 + if resTmp == nil {
  735 + return graphql.Null
  736 + }
  737 + res := resTmp.(*introspection.Type)
  738 + fc.Result = res
  739 + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  740 +}
  741 +
  742 +func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
  743 + defer func() {
  744 + if r := recover(); r != nil {
  745 + ec.Error(ctx, ec.Recover(ctx, r))
  746 + ret = graphql.Null
  747 + }
  748 + }()
  749 + fc := &graphql.FieldContext{
  750 + Object: "Query",
  751 + Field: field,
  752 + Args: nil,
  753 + IsMethod: true,
  754 + IsResolver: false,
  755 + }
  756 +
  757 + ctx = graphql.WithFieldContext(ctx, fc)
  758 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  759 + ctx = rctx // use context from middleware stack in children
  760 + return ec.introspectSchema()
  761 + })
  762 + if err != nil {
  763 + ec.Error(ctx, err)
  764 + return graphql.Null
  765 + }
  766 + if resTmp == nil {
  767 + return graphql.Null
  768 + }
  769 + res := resTmp.(*introspection.Schema)
  770 + fc.Result = res
  771 + return ec.marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx, field.Selections, res)
  772 +}
  773 +
  774 +func (ec *executionContext) _Role_id(ctx context.Context, field graphql.CollectedField, obj *model.Role) (ret graphql.Marshaler) {
  775 + defer func() {
  776 + if r := recover(); r != nil {
  777 + ec.Error(ctx, ec.Recover(ctx, r))
  778 + ret = graphql.Null
  779 + }
  780 + }()
  781 + fc := &graphql.FieldContext{
  782 + Object: "Role",
  783 + Field: field,
  784 + Args: nil,
  785 + IsMethod: false,
  786 + IsResolver: false,
  787 + }
  788 +
  789 + ctx = graphql.WithFieldContext(ctx, fc)
  790 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  791 + ctx = rctx // use context from middleware stack in children
  792 + return obj.ID, nil
  793 + })
  794 + if err != nil {
  795 + ec.Error(ctx, err)
  796 + return graphql.Null
  797 + }
  798 + if resTmp == nil {
  799 + return graphql.Null
  800 + }
  801 + res := resTmp.(*int)
  802 + fc.Result = res
  803 + return ec.marshalOInt2ᚖint(ctx, field.Selections, res)
  804 +}
  805 +
  806 +func (ec *executionContext) _Role_roleName(ctx context.Context, field graphql.CollectedField, obj *model.Role) (ret graphql.Marshaler) {
  807 + defer func() {
  808 + if r := recover(); r != nil {
  809 + ec.Error(ctx, ec.Recover(ctx, r))
  810 + ret = graphql.Null
  811 + }
  812 + }()
  813 + fc := &graphql.FieldContext{
  814 + Object: "Role",
  815 + Field: field,
  816 + Args: nil,
  817 + IsMethod: false,
  818 + IsResolver: false,
  819 + }
  820 +
  821 + ctx = graphql.WithFieldContext(ctx, fc)
  822 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  823 + ctx = rctx // use context from middleware stack in children
  824 + return obj.RoleName, nil
  825 + })
  826 + if err != nil {
  827 + ec.Error(ctx, err)
  828 + return graphql.Null
  829 + }
  830 + if resTmp == nil {
  831 + return graphql.Null
  832 + }
  833 + res := resTmp.(*string)
  834 + fc.Result = res
  835 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  836 +}
  837 +
  838 +func (ec *executionContext) _Role_parentId(ctx context.Context, field graphql.CollectedField, obj *model.Role) (ret graphql.Marshaler) {
  839 + defer func() {
  840 + if r := recover(); r != nil {
  841 + ec.Error(ctx, ec.Recover(ctx, r))
  842 + ret = graphql.Null
  843 + }
  844 + }()
  845 + fc := &graphql.FieldContext{
  846 + Object: "Role",
  847 + Field: field,
  848 + Args: nil,
  849 + IsMethod: false,
  850 + IsResolver: false,
  851 + }
  852 +
  853 + ctx = graphql.WithFieldContext(ctx, fc)
  854 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  855 + ctx = rctx // use context from middleware stack in children
  856 + return obj.ParentID, nil
  857 + })
  858 + if err != nil {
  859 + ec.Error(ctx, err)
  860 + return graphql.Null
  861 + }
  862 + if resTmp == nil {
  863 + return graphql.Null
  864 + }
  865 + res := resTmp.(*int)
  866 + fc.Result = res
  867 + return ec.marshalOInt2ᚖint(ctx, field.Selections, res)
  868 +}
  869 +
  870 +func (ec *executionContext) _Role_createTime(ctx context.Context, field graphql.CollectedField, obj *model.Role) (ret graphql.Marshaler) {
  871 + defer func() {
  872 + if r := recover(); r != nil {
  873 + ec.Error(ctx, ec.Recover(ctx, r))
  874 + ret = graphql.Null
  875 + }
  876 + }()
  877 + fc := &graphql.FieldContext{
  878 + Object: "Role",
  879 + Field: field,
  880 + Args: nil,
  881 + IsMethod: false,
  882 + IsResolver: false,
  883 + }
  884 +
  885 + ctx = graphql.WithFieldContext(ctx, fc)
  886 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  887 + ctx = rctx // use context from middleware stack in children
  888 + return obj.CreateTime, nil
  889 + })
  890 + if err != nil {
  891 + ec.Error(ctx, err)
  892 + return graphql.Null
  893 + }
  894 + if resTmp == nil {
  895 + return graphql.Null
  896 + }
  897 + res := resTmp.(*string)
  898 + fc.Result = res
  899 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  900 +}
  901 +
  902 +func (ec *executionContext) _Role_updateTime(ctx context.Context, field graphql.CollectedField, obj *model.Role) (ret graphql.Marshaler) {
  903 + defer func() {
  904 + if r := recover(); r != nil {
  905 + ec.Error(ctx, ec.Recover(ctx, r))
  906 + ret = graphql.Null
  907 + }
  908 + }()
  909 + fc := &graphql.FieldContext{
  910 + Object: "Role",
  911 + Field: field,
  912 + Args: nil,
  913 + IsMethod: false,
  914 + IsResolver: false,
  915 + }
  916 +
  917 + ctx = graphql.WithFieldContext(ctx, fc)
  918 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  919 + ctx = rctx // use context from middleware stack in children
  920 + return obj.UpdateTime, nil
  921 + })
  922 + if err != nil {
  923 + ec.Error(ctx, err)
  924 + return graphql.Null
  925 + }
  926 + if resTmp == nil {
  927 + return graphql.Null
  928 + }
  929 + res := resTmp.(*string)
  930 + fc.Result = res
  931 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  932 +}
  933 +
  934 +func (ec *executionContext) _Users_name(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  935 + defer func() {
  936 + if r := recover(); r != nil {
  937 + ec.Error(ctx, ec.Recover(ctx, r))
  938 + ret = graphql.Null
  939 + }
  940 + }()
  941 + fc := &graphql.FieldContext{
  942 + Object: "Users",
  943 + Field: field,
  944 + Args: nil,
  945 + IsMethod: false,
  946 + IsResolver: false,
  947 + }
  948 +
  949 + ctx = graphql.WithFieldContext(ctx, fc)
  950 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  951 + ctx = rctx // use context from middleware stack in children
  952 + return obj.Name, nil
  953 + })
  954 + if err != nil {
  955 + ec.Error(ctx, err)
  956 + return graphql.Null
  957 + }
  958 + if resTmp == nil {
  959 + return graphql.Null
  960 + }
  961 + res := resTmp.(*string)
  962 + fc.Result = res
  963 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  964 +}
  965 +
  966 +func (ec *executionContext) _Users_phone(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  967 + defer func() {
  968 + if r := recover(); r != nil {
  969 + ec.Error(ctx, ec.Recover(ctx, r))
  970 + ret = graphql.Null
  971 + }
  972 + }()
  973 + fc := &graphql.FieldContext{
  974 + Object: "Users",
  975 + Field: field,
  976 + Args: nil,
  977 + IsMethod: false,
  978 + IsResolver: false,
  979 + }
  980 +
  981 + ctx = graphql.WithFieldContext(ctx, fc)
  982 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  983 + ctx = rctx // use context from middleware stack in children
  984 + return obj.Phone, nil
  985 + })
  986 + if err != nil {
  987 + ec.Error(ctx, err)
  988 + return graphql.Null
  989 + }
  990 + if resTmp == nil {
  991 + return graphql.Null
  992 + }
  993 + res := resTmp.(*string)
  994 + fc.Result = res
  995 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  996 +}
  997 +
  998 +func (ec *executionContext) _Users_roles(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  999 + defer func() {
  1000 + if r := recover(); r != nil {
  1001 + ec.Error(ctx, ec.Recover(ctx, r))
  1002 + ret = graphql.Null
  1003 + }
  1004 + }()
  1005 + fc := &graphql.FieldContext{
  1006 + Object: "Users",
  1007 + Field: field,
  1008 + Args: nil,
  1009 + IsMethod: true,
  1010 + IsResolver: true,
  1011 + }
  1012 +
  1013 + ctx = graphql.WithFieldContext(ctx, fc)
  1014 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1015 + ctx = rctx // use context from middleware stack in children
  1016 + return ec.resolvers.Users().Roles(rctx, obj)
  1017 + })
  1018 + if err != nil {
  1019 + ec.Error(ctx, err)
  1020 + return graphql.Null
  1021 + }
  1022 + if resTmp == nil {
  1023 + return graphql.Null
  1024 + }
  1025 + res := resTmp.([]*model.Role)
  1026 + fc.Result = res
  1027 + return ec.marshalORole2ᚕᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐRoleᚄ(ctx, field.Selections, res)
  1028 +}
  1029 +
  1030 +func (ec *executionContext) _Users_status(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  1031 + defer func() {
  1032 + if r := recover(); r != nil {
  1033 + ec.Error(ctx, ec.Recover(ctx, r))
  1034 + ret = graphql.Null
  1035 + }
  1036 + }()
  1037 + fc := &graphql.FieldContext{
  1038 + Object: "Users",
  1039 + Field: field,
  1040 + Args: nil,
  1041 + IsMethod: false,
  1042 + IsResolver: false,
  1043 + }
  1044 +
  1045 + ctx = graphql.WithFieldContext(ctx, fc)
  1046 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1047 + ctx = rctx // use context from middleware stack in children
  1048 + return obj.Status, nil
  1049 + })
  1050 + if err != nil {
  1051 + ec.Error(ctx, err)
  1052 + return graphql.Null
  1053 + }
  1054 + if resTmp == nil {
  1055 + return graphql.Null
  1056 + }
  1057 + res := resTmp.(*int)
  1058 + fc.Result = res
  1059 + return ec.marshalOInt2ᚖint(ctx, field.Selections, res)
  1060 +}
  1061 +
  1062 +func (ec *executionContext) _Users_adminType(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  1063 + defer func() {
  1064 + if r := recover(); r != nil {
  1065 + ec.Error(ctx, ec.Recover(ctx, r))
  1066 + ret = graphql.Null
  1067 + }
  1068 + }()
  1069 + fc := &graphql.FieldContext{
  1070 + Object: "Users",
  1071 + Field: field,
  1072 + Args: nil,
  1073 + IsMethod: false,
  1074 + IsResolver: false,
  1075 + }
  1076 +
  1077 + ctx = graphql.WithFieldContext(ctx, fc)
  1078 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1079 + ctx = rctx // use context from middleware stack in children
  1080 + return obj.AdminType, nil
  1081 + })
  1082 + if err != nil {
  1083 + ec.Error(ctx, err)
  1084 + return graphql.Null
  1085 + }
  1086 + if resTmp == nil {
  1087 + return graphql.Null
  1088 + }
  1089 + res := resTmp.(*int)
  1090 + fc.Result = res
  1091 + return ec.marshalOInt2ᚖint(ctx, field.Selections, res)
  1092 +}
  1093 +
  1094 +func (ec *executionContext) _Users_createTime(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  1095 + defer func() {
  1096 + if r := recover(); r != nil {
  1097 + ec.Error(ctx, ec.Recover(ctx, r))
  1098 + ret = graphql.Null
  1099 + }
  1100 + }()
  1101 + fc := &graphql.FieldContext{
  1102 + Object: "Users",
  1103 + Field: field,
  1104 + Args: nil,
  1105 + IsMethod: false,
  1106 + IsResolver: false,
  1107 + }
  1108 +
  1109 + ctx = graphql.WithFieldContext(ctx, fc)
  1110 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1111 + ctx = rctx // use context from middleware stack in children
  1112 + return obj.CreateTime, nil
  1113 + })
  1114 + if err != nil {
  1115 + ec.Error(ctx, err)
  1116 + return graphql.Null
  1117 + }
  1118 + if resTmp == nil {
  1119 + return graphql.Null
  1120 + }
  1121 + res := resTmp.(*string)
  1122 + fc.Result = res
  1123 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  1124 +}
  1125 +
  1126 +func (ec *executionContext) _Users_updateTime(ctx context.Context, field graphql.CollectedField, obj *model.Users) (ret graphql.Marshaler) {
  1127 + defer func() {
  1128 + if r := recover(); r != nil {
  1129 + ec.Error(ctx, ec.Recover(ctx, r))
  1130 + ret = graphql.Null
  1131 + }
  1132 + }()
  1133 + fc := &graphql.FieldContext{
  1134 + Object: "Users",
  1135 + Field: field,
  1136 + Args: nil,
  1137 + IsMethod: false,
  1138 + IsResolver: false,
  1139 + }
  1140 +
  1141 + ctx = graphql.WithFieldContext(ctx, fc)
  1142 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1143 + ctx = rctx // use context from middleware stack in children
  1144 + return obj.UpdateTime, nil
  1145 + })
  1146 + if err != nil {
  1147 + ec.Error(ctx, err)
  1148 + return graphql.Null
  1149 + }
  1150 + if resTmp == nil {
  1151 + return graphql.Null
  1152 + }
  1153 + res := resTmp.(*string)
  1154 + fc.Result = res
  1155 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  1156 +}
  1157 +
  1158 +func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) {
  1159 + defer func() {
  1160 + if r := recover(); r != nil {
  1161 + ec.Error(ctx, ec.Recover(ctx, r))
  1162 + ret = graphql.Null
  1163 + }
  1164 + }()
  1165 + fc := &graphql.FieldContext{
  1166 + Object: "__Directive",
  1167 + Field: field,
  1168 + Args: nil,
  1169 + IsMethod: false,
  1170 + IsResolver: false,
  1171 + }
  1172 +
  1173 + ctx = graphql.WithFieldContext(ctx, fc)
  1174 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1175 + ctx = rctx // use context from middleware stack in children
  1176 + return obj.Name, nil
  1177 + })
  1178 + if err != nil {
  1179 + ec.Error(ctx, err)
  1180 + return graphql.Null
  1181 + }
  1182 + if resTmp == nil {
  1183 + if !graphql.HasFieldError(ctx, fc) {
  1184 + ec.Errorf(ctx, "must not be null")
  1185 + }
  1186 + return graphql.Null
  1187 + }
  1188 + res := resTmp.(string)
  1189 + fc.Result = res
  1190 + return ec.marshalNString2string(ctx, field.Selections, res)
  1191 +}
  1192 +
  1193 +func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) {
  1194 + defer func() {
  1195 + if r := recover(); r != nil {
  1196 + ec.Error(ctx, ec.Recover(ctx, r))
  1197 + ret = graphql.Null
  1198 + }
  1199 + }()
  1200 + fc := &graphql.FieldContext{
  1201 + Object: "__Directive",
  1202 + Field: field,
  1203 + Args: nil,
  1204 + IsMethod: false,
  1205 + IsResolver: false,
  1206 + }
  1207 +
  1208 + ctx = graphql.WithFieldContext(ctx, fc)
  1209 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1210 + ctx = rctx // use context from middleware stack in children
  1211 + return obj.Description, nil
  1212 + })
  1213 + if err != nil {
  1214 + ec.Error(ctx, err)
  1215 + return graphql.Null
  1216 + }
  1217 + if resTmp == nil {
  1218 + return graphql.Null
  1219 + }
  1220 + res := resTmp.(string)
  1221 + fc.Result = res
  1222 + return ec.marshalOString2string(ctx, field.Selections, res)
  1223 +}
  1224 +
  1225 +func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) {
  1226 + defer func() {
  1227 + if r := recover(); r != nil {
  1228 + ec.Error(ctx, ec.Recover(ctx, r))
  1229 + ret = graphql.Null
  1230 + }
  1231 + }()
  1232 + fc := &graphql.FieldContext{
  1233 + Object: "__Directive",
  1234 + Field: field,
  1235 + Args: nil,
  1236 + IsMethod: false,
  1237 + IsResolver: false,
  1238 + }
  1239 +
  1240 + ctx = graphql.WithFieldContext(ctx, fc)
  1241 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1242 + ctx = rctx // use context from middleware stack in children
  1243 + return obj.Locations, nil
  1244 + })
  1245 + if err != nil {
  1246 + ec.Error(ctx, err)
  1247 + return graphql.Null
  1248 + }
  1249 + if resTmp == nil {
  1250 + if !graphql.HasFieldError(ctx, fc) {
  1251 + ec.Errorf(ctx, "must not be null")
  1252 + }
  1253 + return graphql.Null
  1254 + }
  1255 + res := resTmp.([]string)
  1256 + fc.Result = res
  1257 + return ec.marshalN__DirectiveLocation2ᚕstringᚄ(ctx, field.Selections, res)
  1258 +}
  1259 +
  1260 +func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) {
  1261 + defer func() {
  1262 + if r := recover(); r != nil {
  1263 + ec.Error(ctx, ec.Recover(ctx, r))
  1264 + ret = graphql.Null
  1265 + }
  1266 + }()
  1267 + fc := &graphql.FieldContext{
  1268 + Object: "__Directive",
  1269 + Field: field,
  1270 + Args: nil,
  1271 + IsMethod: false,
  1272 + IsResolver: false,
  1273 + }
  1274 +
  1275 + ctx = graphql.WithFieldContext(ctx, fc)
  1276 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1277 + ctx = rctx // use context from middleware stack in children
  1278 + return obj.Args, nil
  1279 + })
  1280 + if err != nil {
  1281 + ec.Error(ctx, err)
  1282 + return graphql.Null
  1283 + }
  1284 + if resTmp == nil {
  1285 + if !graphql.HasFieldError(ctx, fc) {
  1286 + ec.Errorf(ctx, "must not be null")
  1287 + }
  1288 + return graphql.Null
  1289 + }
  1290 + res := resTmp.([]introspection.InputValue)
  1291 + fc.Result = res
  1292 + return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res)
  1293 +}
  1294 +
  1295 +func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) {
  1296 + defer func() {
  1297 + if r := recover(); r != nil {
  1298 + ec.Error(ctx, ec.Recover(ctx, r))
  1299 + ret = graphql.Null
  1300 + }
  1301 + }()
  1302 + fc := &graphql.FieldContext{
  1303 + Object: "__EnumValue",
  1304 + Field: field,
  1305 + Args: nil,
  1306 + IsMethod: false,
  1307 + IsResolver: false,
  1308 + }
  1309 +
  1310 + ctx = graphql.WithFieldContext(ctx, fc)
  1311 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1312 + ctx = rctx // use context from middleware stack in children
  1313 + return obj.Name, nil
  1314 + })
  1315 + if err != nil {
  1316 + ec.Error(ctx, err)
  1317 + return graphql.Null
  1318 + }
  1319 + if resTmp == nil {
  1320 + if !graphql.HasFieldError(ctx, fc) {
  1321 + ec.Errorf(ctx, "must not be null")
  1322 + }
  1323 + return graphql.Null
  1324 + }
  1325 + res := resTmp.(string)
  1326 + fc.Result = res
  1327 + return ec.marshalNString2string(ctx, field.Selections, res)
  1328 +}
  1329 +
  1330 +func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) {
  1331 + defer func() {
  1332 + if r := recover(); r != nil {
  1333 + ec.Error(ctx, ec.Recover(ctx, r))
  1334 + ret = graphql.Null
  1335 + }
  1336 + }()
  1337 + fc := &graphql.FieldContext{
  1338 + Object: "__EnumValue",
  1339 + Field: field,
  1340 + Args: nil,
  1341 + IsMethod: false,
  1342 + IsResolver: false,
  1343 + }
  1344 +
  1345 + ctx = graphql.WithFieldContext(ctx, fc)
  1346 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1347 + ctx = rctx // use context from middleware stack in children
  1348 + return obj.Description, nil
  1349 + })
  1350 + if err != nil {
  1351 + ec.Error(ctx, err)
  1352 + return graphql.Null
  1353 + }
  1354 + if resTmp == nil {
  1355 + return graphql.Null
  1356 + }
  1357 + res := resTmp.(string)
  1358 + fc.Result = res
  1359 + return ec.marshalOString2string(ctx, field.Selections, res)
  1360 +}
  1361 +
  1362 +func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) {
  1363 + defer func() {
  1364 + if r := recover(); r != nil {
  1365 + ec.Error(ctx, ec.Recover(ctx, r))
  1366 + ret = graphql.Null
  1367 + }
  1368 + }()
  1369 + fc := &graphql.FieldContext{
  1370 + Object: "__EnumValue",
  1371 + Field: field,
  1372 + Args: nil,
  1373 + IsMethod: true,
  1374 + IsResolver: false,
  1375 + }
  1376 +
  1377 + ctx = graphql.WithFieldContext(ctx, fc)
  1378 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1379 + ctx = rctx // use context from middleware stack in children
  1380 + return obj.IsDeprecated(), nil
  1381 + })
  1382 + if err != nil {
  1383 + ec.Error(ctx, err)
  1384 + return graphql.Null
  1385 + }
  1386 + if resTmp == nil {
  1387 + if !graphql.HasFieldError(ctx, fc) {
  1388 + ec.Errorf(ctx, "must not be null")
  1389 + }
  1390 + return graphql.Null
  1391 + }
  1392 + res := resTmp.(bool)
  1393 + fc.Result = res
  1394 + return ec.marshalNBoolean2bool(ctx, field.Selections, res)
  1395 +}
  1396 +
  1397 +func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) {
  1398 + defer func() {
  1399 + if r := recover(); r != nil {
  1400 + ec.Error(ctx, ec.Recover(ctx, r))
  1401 + ret = graphql.Null
  1402 + }
  1403 + }()
  1404 + fc := &graphql.FieldContext{
  1405 + Object: "__EnumValue",
  1406 + Field: field,
  1407 + Args: nil,
  1408 + IsMethod: true,
  1409 + IsResolver: false,
  1410 + }
  1411 +
  1412 + ctx = graphql.WithFieldContext(ctx, fc)
  1413 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1414 + ctx = rctx // use context from middleware stack in children
  1415 + return obj.DeprecationReason(), nil
  1416 + })
  1417 + if err != nil {
  1418 + ec.Error(ctx, err)
  1419 + return graphql.Null
  1420 + }
  1421 + if resTmp == nil {
  1422 + return graphql.Null
  1423 + }
  1424 + res := resTmp.(*string)
  1425 + fc.Result = res
  1426 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  1427 +}
  1428 +
  1429 +func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {
  1430 + defer func() {
  1431 + if r := recover(); r != nil {
  1432 + ec.Error(ctx, ec.Recover(ctx, r))
  1433 + ret = graphql.Null
  1434 + }
  1435 + }()
  1436 + fc := &graphql.FieldContext{
  1437 + Object: "__Field",
  1438 + Field: field,
  1439 + Args: nil,
  1440 + IsMethod: false,
  1441 + IsResolver: false,
  1442 + }
  1443 +
  1444 + ctx = graphql.WithFieldContext(ctx, fc)
  1445 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1446 + ctx = rctx // use context from middleware stack in children
  1447 + return obj.Name, nil
  1448 + })
  1449 + if err != nil {
  1450 + ec.Error(ctx, err)
  1451 + return graphql.Null
  1452 + }
  1453 + if resTmp == nil {
  1454 + if !graphql.HasFieldError(ctx, fc) {
  1455 + ec.Errorf(ctx, "must not be null")
  1456 + }
  1457 + return graphql.Null
  1458 + }
  1459 + res := resTmp.(string)
  1460 + fc.Result = res
  1461 + return ec.marshalNString2string(ctx, field.Selections, res)
  1462 +}
  1463 +
  1464 +func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {
  1465 + defer func() {
  1466 + if r := recover(); r != nil {
  1467 + ec.Error(ctx, ec.Recover(ctx, r))
  1468 + ret = graphql.Null
  1469 + }
  1470 + }()
  1471 + fc := &graphql.FieldContext{
  1472 + Object: "__Field",
  1473 + Field: field,
  1474 + Args: nil,
  1475 + IsMethod: false,
  1476 + IsResolver: false,
  1477 + }
  1478 +
  1479 + ctx = graphql.WithFieldContext(ctx, fc)
  1480 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1481 + ctx = rctx // use context from middleware stack in children
  1482 + return obj.Description, nil
  1483 + })
  1484 + if err != nil {
  1485 + ec.Error(ctx, err)
  1486 + return graphql.Null
  1487 + }
  1488 + if resTmp == nil {
  1489 + return graphql.Null
  1490 + }
  1491 + res := resTmp.(string)
  1492 + fc.Result = res
  1493 + return ec.marshalOString2string(ctx, field.Selections, res)
  1494 +}
  1495 +
  1496 +func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {
  1497 + defer func() {
  1498 + if r := recover(); r != nil {
  1499 + ec.Error(ctx, ec.Recover(ctx, r))
  1500 + ret = graphql.Null
  1501 + }
  1502 + }()
  1503 + fc := &graphql.FieldContext{
  1504 + Object: "__Field",
  1505 + Field: field,
  1506 + Args: nil,
  1507 + IsMethod: false,
  1508 + IsResolver: false,
  1509 + }
  1510 +
  1511 + ctx = graphql.WithFieldContext(ctx, fc)
  1512 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1513 + ctx = rctx // use context from middleware stack in children
  1514 + return obj.Args, nil
  1515 + })
  1516 + if err != nil {
  1517 + ec.Error(ctx, err)
  1518 + return graphql.Null
  1519 + }
  1520 + if resTmp == nil {
  1521 + if !graphql.HasFieldError(ctx, fc) {
  1522 + ec.Errorf(ctx, "must not be null")
  1523 + }
  1524 + return graphql.Null
  1525 + }
  1526 + res := resTmp.([]introspection.InputValue)
  1527 + fc.Result = res
  1528 + return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res)
  1529 +}
  1530 +
  1531 +func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {
  1532 + defer func() {
  1533 + if r := recover(); r != nil {
  1534 + ec.Error(ctx, ec.Recover(ctx, r))
  1535 + ret = graphql.Null
  1536 + }
  1537 + }()
  1538 + fc := &graphql.FieldContext{
  1539 + Object: "__Field",
  1540 + Field: field,
  1541 + Args: nil,
  1542 + IsMethod: false,
  1543 + IsResolver: false,
  1544 + }
  1545 +
  1546 + ctx = graphql.WithFieldContext(ctx, fc)
  1547 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1548 + ctx = rctx // use context from middleware stack in children
  1549 + return obj.Type, nil
  1550 + })
  1551 + if err != nil {
  1552 + ec.Error(ctx, err)
  1553 + return graphql.Null
  1554 + }
  1555 + if resTmp == nil {
  1556 + if !graphql.HasFieldError(ctx, fc) {
  1557 + ec.Errorf(ctx, "must not be null")
  1558 + }
  1559 + return graphql.Null
  1560 + }
  1561 + res := resTmp.(*introspection.Type)
  1562 + fc.Result = res
  1563 + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  1564 +}
  1565 +
  1566 +func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {
  1567 + defer func() {
  1568 + if r := recover(); r != nil {
  1569 + ec.Error(ctx, ec.Recover(ctx, r))
  1570 + ret = graphql.Null
  1571 + }
  1572 + }()
  1573 + fc := &graphql.FieldContext{
  1574 + Object: "__Field",
  1575 + Field: field,
  1576 + Args: nil,
  1577 + IsMethod: true,
  1578 + IsResolver: false,
  1579 + }
  1580 +
  1581 + ctx = graphql.WithFieldContext(ctx, fc)
  1582 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1583 + ctx = rctx // use context from middleware stack in children
  1584 + return obj.IsDeprecated(), nil
  1585 + })
  1586 + if err != nil {
  1587 + ec.Error(ctx, err)
  1588 + return graphql.Null
  1589 + }
  1590 + if resTmp == nil {
  1591 + if !graphql.HasFieldError(ctx, fc) {
  1592 + ec.Errorf(ctx, "must not be null")
  1593 + }
  1594 + return graphql.Null
  1595 + }
  1596 + res := resTmp.(bool)
  1597 + fc.Result = res
  1598 + return ec.marshalNBoolean2bool(ctx, field.Selections, res)
  1599 +}
  1600 +
  1601 +func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {
  1602 + defer func() {
  1603 + if r := recover(); r != nil {
  1604 + ec.Error(ctx, ec.Recover(ctx, r))
  1605 + ret = graphql.Null
  1606 + }
  1607 + }()
  1608 + fc := &graphql.FieldContext{
  1609 + Object: "__Field",
  1610 + Field: field,
  1611 + Args: nil,
  1612 + IsMethod: true,
  1613 + IsResolver: false,
  1614 + }
  1615 +
  1616 + ctx = graphql.WithFieldContext(ctx, fc)
  1617 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1618 + ctx = rctx // use context from middleware stack in children
  1619 + return obj.DeprecationReason(), nil
  1620 + })
  1621 + if err != nil {
  1622 + ec.Error(ctx, err)
  1623 + return graphql.Null
  1624 + }
  1625 + if resTmp == nil {
  1626 + return graphql.Null
  1627 + }
  1628 + res := resTmp.(*string)
  1629 + fc.Result = res
  1630 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  1631 +}
  1632 +
  1633 +func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) {
  1634 + defer func() {
  1635 + if r := recover(); r != nil {
  1636 + ec.Error(ctx, ec.Recover(ctx, r))
  1637 + ret = graphql.Null
  1638 + }
  1639 + }()
  1640 + fc := &graphql.FieldContext{
  1641 + Object: "__InputValue",
  1642 + Field: field,
  1643 + Args: nil,
  1644 + IsMethod: false,
  1645 + IsResolver: false,
  1646 + }
  1647 +
  1648 + ctx = graphql.WithFieldContext(ctx, fc)
  1649 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1650 + ctx = rctx // use context from middleware stack in children
  1651 + return obj.Name, nil
  1652 + })
  1653 + if err != nil {
  1654 + ec.Error(ctx, err)
  1655 + return graphql.Null
  1656 + }
  1657 + if resTmp == nil {
  1658 + if !graphql.HasFieldError(ctx, fc) {
  1659 + ec.Errorf(ctx, "must not be null")
  1660 + }
  1661 + return graphql.Null
  1662 + }
  1663 + res := resTmp.(string)
  1664 + fc.Result = res
  1665 + return ec.marshalNString2string(ctx, field.Selections, res)
  1666 +}
  1667 +
  1668 +func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) {
  1669 + defer func() {
  1670 + if r := recover(); r != nil {
  1671 + ec.Error(ctx, ec.Recover(ctx, r))
  1672 + ret = graphql.Null
  1673 + }
  1674 + }()
  1675 + fc := &graphql.FieldContext{
  1676 + Object: "__InputValue",
  1677 + Field: field,
  1678 + Args: nil,
  1679 + IsMethod: false,
  1680 + IsResolver: false,
  1681 + }
  1682 +
  1683 + ctx = graphql.WithFieldContext(ctx, fc)
  1684 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1685 + ctx = rctx // use context from middleware stack in children
  1686 + return obj.Description, nil
  1687 + })
  1688 + if err != nil {
  1689 + ec.Error(ctx, err)
  1690 + return graphql.Null
  1691 + }
  1692 + if resTmp == nil {
  1693 + return graphql.Null
  1694 + }
  1695 + res := resTmp.(string)
  1696 + fc.Result = res
  1697 + return ec.marshalOString2string(ctx, field.Selections, res)
  1698 +}
  1699 +
  1700 +func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) {
  1701 + defer func() {
  1702 + if r := recover(); r != nil {
  1703 + ec.Error(ctx, ec.Recover(ctx, r))
  1704 + ret = graphql.Null
  1705 + }
  1706 + }()
  1707 + fc := &graphql.FieldContext{
  1708 + Object: "__InputValue",
  1709 + Field: field,
  1710 + Args: nil,
  1711 + IsMethod: false,
  1712 + IsResolver: false,
  1713 + }
  1714 +
  1715 + ctx = graphql.WithFieldContext(ctx, fc)
  1716 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1717 + ctx = rctx // use context from middleware stack in children
  1718 + return obj.Type, nil
  1719 + })
  1720 + if err != nil {
  1721 + ec.Error(ctx, err)
  1722 + return graphql.Null
  1723 + }
  1724 + if resTmp == nil {
  1725 + if !graphql.HasFieldError(ctx, fc) {
  1726 + ec.Errorf(ctx, "must not be null")
  1727 + }
  1728 + return graphql.Null
  1729 + }
  1730 + res := resTmp.(*introspection.Type)
  1731 + fc.Result = res
  1732 + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  1733 +}
  1734 +
  1735 +func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) {
  1736 + defer func() {
  1737 + if r := recover(); r != nil {
  1738 + ec.Error(ctx, ec.Recover(ctx, r))
  1739 + ret = graphql.Null
  1740 + }
  1741 + }()
  1742 + fc := &graphql.FieldContext{
  1743 + Object: "__InputValue",
  1744 + Field: field,
  1745 + Args: nil,
  1746 + IsMethod: false,
  1747 + IsResolver: false,
  1748 + }
  1749 +
  1750 + ctx = graphql.WithFieldContext(ctx, fc)
  1751 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1752 + ctx = rctx // use context from middleware stack in children
  1753 + return obj.DefaultValue, nil
  1754 + })
  1755 + if err != nil {
  1756 + ec.Error(ctx, err)
  1757 + return graphql.Null
  1758 + }
  1759 + if resTmp == nil {
  1760 + return graphql.Null
  1761 + }
  1762 + res := resTmp.(*string)
  1763 + fc.Result = res
  1764 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  1765 +}
  1766 +
  1767 +func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
  1768 + defer func() {
  1769 + if r := recover(); r != nil {
  1770 + ec.Error(ctx, ec.Recover(ctx, r))
  1771 + ret = graphql.Null
  1772 + }
  1773 + }()
  1774 + fc := &graphql.FieldContext{
  1775 + Object: "__Schema",
  1776 + Field: field,
  1777 + Args: nil,
  1778 + IsMethod: true,
  1779 + IsResolver: false,
  1780 + }
  1781 +
  1782 + ctx = graphql.WithFieldContext(ctx, fc)
  1783 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1784 + ctx = rctx // use context from middleware stack in children
  1785 + return obj.Types(), nil
  1786 + })
  1787 + if err != nil {
  1788 + ec.Error(ctx, err)
  1789 + return graphql.Null
  1790 + }
  1791 + if resTmp == nil {
  1792 + if !graphql.HasFieldError(ctx, fc) {
  1793 + ec.Errorf(ctx, "must not be null")
  1794 + }
  1795 + return graphql.Null
  1796 + }
  1797 + res := resTmp.([]introspection.Type)
  1798 + fc.Result = res
  1799 + return ec.marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res)
  1800 +}
  1801 +
  1802 +func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
  1803 + defer func() {
  1804 + if r := recover(); r != nil {
  1805 + ec.Error(ctx, ec.Recover(ctx, r))
  1806 + ret = graphql.Null
  1807 + }
  1808 + }()
  1809 + fc := &graphql.FieldContext{
  1810 + Object: "__Schema",
  1811 + Field: field,
  1812 + Args: nil,
  1813 + IsMethod: true,
  1814 + IsResolver: false,
  1815 + }
  1816 +
  1817 + ctx = graphql.WithFieldContext(ctx, fc)
  1818 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1819 + ctx = rctx // use context from middleware stack in children
  1820 + return obj.QueryType(), nil
  1821 + })
  1822 + if err != nil {
  1823 + ec.Error(ctx, err)
  1824 + return graphql.Null
  1825 + }
  1826 + if resTmp == nil {
  1827 + if !graphql.HasFieldError(ctx, fc) {
  1828 + ec.Errorf(ctx, "must not be null")
  1829 + }
  1830 + return graphql.Null
  1831 + }
  1832 + res := resTmp.(*introspection.Type)
  1833 + fc.Result = res
  1834 + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  1835 +}
  1836 +
  1837 +func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
  1838 + defer func() {
  1839 + if r := recover(); r != nil {
  1840 + ec.Error(ctx, ec.Recover(ctx, r))
  1841 + ret = graphql.Null
  1842 + }
  1843 + }()
  1844 + fc := &graphql.FieldContext{
  1845 + Object: "__Schema",
  1846 + Field: field,
  1847 + Args: nil,
  1848 + IsMethod: true,
  1849 + IsResolver: false,
  1850 + }
  1851 +
  1852 + ctx = graphql.WithFieldContext(ctx, fc)
  1853 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1854 + ctx = rctx // use context from middleware stack in children
  1855 + return obj.MutationType(), nil
  1856 + })
  1857 + if err != nil {
  1858 + ec.Error(ctx, err)
  1859 + return graphql.Null
  1860 + }
  1861 + if resTmp == nil {
  1862 + return graphql.Null
  1863 + }
  1864 + res := resTmp.(*introspection.Type)
  1865 + fc.Result = res
  1866 + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  1867 +}
  1868 +
  1869 +func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
  1870 + defer func() {
  1871 + if r := recover(); r != nil {
  1872 + ec.Error(ctx, ec.Recover(ctx, r))
  1873 + ret = graphql.Null
  1874 + }
  1875 + }()
  1876 + fc := &graphql.FieldContext{
  1877 + Object: "__Schema",
  1878 + Field: field,
  1879 + Args: nil,
  1880 + IsMethod: true,
  1881 + IsResolver: false,
  1882 + }
  1883 +
  1884 + ctx = graphql.WithFieldContext(ctx, fc)
  1885 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1886 + ctx = rctx // use context from middleware stack in children
  1887 + return obj.SubscriptionType(), nil
  1888 + })
  1889 + if err != nil {
  1890 + ec.Error(ctx, err)
  1891 + return graphql.Null
  1892 + }
  1893 + if resTmp == nil {
  1894 + return graphql.Null
  1895 + }
  1896 + res := resTmp.(*introspection.Type)
  1897 + fc.Result = res
  1898 + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  1899 +}
  1900 +
  1901 +func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
  1902 + defer func() {
  1903 + if r := recover(); r != nil {
  1904 + ec.Error(ctx, ec.Recover(ctx, r))
  1905 + ret = graphql.Null
  1906 + }
  1907 + }()
  1908 + fc := &graphql.FieldContext{
  1909 + Object: "__Schema",
  1910 + Field: field,
  1911 + Args: nil,
  1912 + IsMethod: true,
  1913 + IsResolver: false,
  1914 + }
  1915 +
  1916 + ctx = graphql.WithFieldContext(ctx, fc)
  1917 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1918 + ctx = rctx // use context from middleware stack in children
  1919 + return obj.Directives(), nil
  1920 + })
  1921 + if err != nil {
  1922 + ec.Error(ctx, err)
  1923 + return graphql.Null
  1924 + }
  1925 + if resTmp == nil {
  1926 + if !graphql.HasFieldError(ctx, fc) {
  1927 + ec.Errorf(ctx, "must not be null")
  1928 + }
  1929 + return graphql.Null
  1930 + }
  1931 + res := resTmp.([]introspection.Directive)
  1932 + fc.Result = res
  1933 + return ec.marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx, field.Selections, res)
  1934 +}
  1935 +
  1936 +func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  1937 + defer func() {
  1938 + if r := recover(); r != nil {
  1939 + ec.Error(ctx, ec.Recover(ctx, r))
  1940 + ret = graphql.Null
  1941 + }
  1942 + }()
  1943 + fc := &graphql.FieldContext{
  1944 + Object: "__Type",
  1945 + Field: field,
  1946 + Args: nil,
  1947 + IsMethod: true,
  1948 + IsResolver: false,
  1949 + }
  1950 +
  1951 + ctx = graphql.WithFieldContext(ctx, fc)
  1952 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1953 + ctx = rctx // use context from middleware stack in children
  1954 + return obj.Kind(), nil
  1955 + })
  1956 + if err != nil {
  1957 + ec.Error(ctx, err)
  1958 + return graphql.Null
  1959 + }
  1960 + if resTmp == nil {
  1961 + if !graphql.HasFieldError(ctx, fc) {
  1962 + ec.Errorf(ctx, "must not be null")
  1963 + }
  1964 + return graphql.Null
  1965 + }
  1966 + res := resTmp.(string)
  1967 + fc.Result = res
  1968 + return ec.marshalN__TypeKind2string(ctx, field.Selections, res)
  1969 +}
  1970 +
  1971 +func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  1972 + defer func() {
  1973 + if r := recover(); r != nil {
  1974 + ec.Error(ctx, ec.Recover(ctx, r))
  1975 + ret = graphql.Null
  1976 + }
  1977 + }()
  1978 + fc := &graphql.FieldContext{
  1979 + Object: "__Type",
  1980 + Field: field,
  1981 + Args: nil,
  1982 + IsMethod: true,
  1983 + IsResolver: false,
  1984 + }
  1985 +
  1986 + ctx = graphql.WithFieldContext(ctx, fc)
  1987 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  1988 + ctx = rctx // use context from middleware stack in children
  1989 + return obj.Name(), nil
  1990 + })
  1991 + if err != nil {
  1992 + ec.Error(ctx, err)
  1993 + return graphql.Null
  1994 + }
  1995 + if resTmp == nil {
  1996 + return graphql.Null
  1997 + }
  1998 + res := resTmp.(*string)
  1999 + fc.Result = res
  2000 + return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
  2001 +}
  2002 +
  2003 +func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2004 + defer func() {
  2005 + if r := recover(); r != nil {
  2006 + ec.Error(ctx, ec.Recover(ctx, r))
  2007 + ret = graphql.Null
  2008 + }
  2009 + }()
  2010 + fc := &graphql.FieldContext{
  2011 + Object: "__Type",
  2012 + Field: field,
  2013 + Args: nil,
  2014 + IsMethod: true,
  2015 + IsResolver: false,
  2016 + }
  2017 +
  2018 + ctx = graphql.WithFieldContext(ctx, fc)
  2019 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2020 + ctx = rctx // use context from middleware stack in children
  2021 + return obj.Description(), nil
  2022 + })
  2023 + if err != nil {
  2024 + ec.Error(ctx, err)
  2025 + return graphql.Null
  2026 + }
  2027 + if resTmp == nil {
  2028 + return graphql.Null
  2029 + }
  2030 + res := resTmp.(string)
  2031 + fc.Result = res
  2032 + return ec.marshalOString2string(ctx, field.Selections, res)
  2033 +}
  2034 +
  2035 +func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2036 + defer func() {
  2037 + if r := recover(); r != nil {
  2038 + ec.Error(ctx, ec.Recover(ctx, r))
  2039 + ret = graphql.Null
  2040 + }
  2041 + }()
  2042 + fc := &graphql.FieldContext{
  2043 + Object: "__Type",
  2044 + Field: field,
  2045 + Args: nil,
  2046 + IsMethod: true,
  2047 + IsResolver: false,
  2048 + }
  2049 +
  2050 + ctx = graphql.WithFieldContext(ctx, fc)
  2051 + rawArgs := field.ArgumentMap(ec.Variables)
  2052 + args, err := ec.field___Type_fields_args(ctx, rawArgs)
  2053 + if err != nil {
  2054 + ec.Error(ctx, err)
  2055 + return graphql.Null
  2056 + }
  2057 + fc.Args = args
  2058 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2059 + ctx = rctx // use context from middleware stack in children
  2060 + return obj.Fields(args["includeDeprecated"].(bool)), nil
  2061 + })
  2062 + if err != nil {
  2063 + ec.Error(ctx, err)
  2064 + return graphql.Null
  2065 + }
  2066 + if resTmp == nil {
  2067 + return graphql.Null
  2068 + }
  2069 + res := resTmp.([]introspection.Field)
  2070 + fc.Result = res
  2071 + return ec.marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐFieldᚄ(ctx, field.Selections, res)
  2072 +}
  2073 +
  2074 +func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2075 + defer func() {
  2076 + if r := recover(); r != nil {
  2077 + ec.Error(ctx, ec.Recover(ctx, r))
  2078 + ret = graphql.Null
  2079 + }
  2080 + }()
  2081 + fc := &graphql.FieldContext{
  2082 + Object: "__Type",
  2083 + Field: field,
  2084 + Args: nil,
  2085 + IsMethod: true,
  2086 + IsResolver: false,
  2087 + }
  2088 +
  2089 + ctx = graphql.WithFieldContext(ctx, fc)
  2090 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2091 + ctx = rctx // use context from middleware stack in children
  2092 + return obj.Interfaces(), nil
  2093 + })
  2094 + if err != nil {
  2095 + ec.Error(ctx, err)
  2096 + return graphql.Null
  2097 + }
  2098 + if resTmp == nil {
  2099 + return graphql.Null
  2100 + }
  2101 + res := resTmp.([]introspection.Type)
  2102 + fc.Result = res
  2103 + return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res)
  2104 +}
  2105 +
  2106 +func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2107 + defer func() {
  2108 + if r := recover(); r != nil {
  2109 + ec.Error(ctx, ec.Recover(ctx, r))
  2110 + ret = graphql.Null
  2111 + }
  2112 + }()
  2113 + fc := &graphql.FieldContext{
  2114 + Object: "__Type",
  2115 + Field: field,
  2116 + Args: nil,
  2117 + IsMethod: true,
  2118 + IsResolver: false,
  2119 + }
  2120 +
  2121 + ctx = graphql.WithFieldContext(ctx, fc)
  2122 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2123 + ctx = rctx // use context from middleware stack in children
  2124 + return obj.PossibleTypes(), nil
  2125 + })
  2126 + if err != nil {
  2127 + ec.Error(ctx, err)
  2128 + return graphql.Null
  2129 + }
  2130 + if resTmp == nil {
  2131 + return graphql.Null
  2132 + }
  2133 + res := resTmp.([]introspection.Type)
  2134 + fc.Result = res
  2135 + return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res)
  2136 +}
  2137 +
  2138 +func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2139 + defer func() {
  2140 + if r := recover(); r != nil {
  2141 + ec.Error(ctx, ec.Recover(ctx, r))
  2142 + ret = graphql.Null
  2143 + }
  2144 + }()
  2145 + fc := &graphql.FieldContext{
  2146 + Object: "__Type",
  2147 + Field: field,
  2148 + Args: nil,
  2149 + IsMethod: true,
  2150 + IsResolver: false,
  2151 + }
  2152 +
  2153 + ctx = graphql.WithFieldContext(ctx, fc)
  2154 + rawArgs := field.ArgumentMap(ec.Variables)
  2155 + args, err := ec.field___Type_enumValues_args(ctx, rawArgs)
  2156 + if err != nil {
  2157 + ec.Error(ctx, err)
  2158 + return graphql.Null
  2159 + }
  2160 + fc.Args = args
  2161 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2162 + ctx = rctx // use context from middleware stack in children
  2163 + return obj.EnumValues(args["includeDeprecated"].(bool)), nil
  2164 + })
  2165 + if err != nil {
  2166 + ec.Error(ctx, err)
  2167 + return graphql.Null
  2168 + }
  2169 + if resTmp == nil {
  2170 + return graphql.Null
  2171 + }
  2172 + res := resTmp.([]introspection.EnumValue)
  2173 + fc.Result = res
  2174 + return ec.marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx, field.Selections, res)
  2175 +}
  2176 +
  2177 +func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2178 + defer func() {
  2179 + if r := recover(); r != nil {
  2180 + ec.Error(ctx, ec.Recover(ctx, r))
  2181 + ret = graphql.Null
  2182 + }
  2183 + }()
  2184 + fc := &graphql.FieldContext{
  2185 + Object: "__Type",
  2186 + Field: field,
  2187 + Args: nil,
  2188 + IsMethod: true,
  2189 + IsResolver: false,
  2190 + }
  2191 +
  2192 + ctx = graphql.WithFieldContext(ctx, fc)
  2193 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2194 + ctx = rctx // use context from middleware stack in children
  2195 + return obj.InputFields(), nil
  2196 + })
  2197 + if err != nil {
  2198 + ec.Error(ctx, err)
  2199 + return graphql.Null
  2200 + }
  2201 + if resTmp == nil {
  2202 + return graphql.Null
  2203 + }
  2204 + res := resTmp.([]introspection.InputValue)
  2205 + fc.Result = res
  2206 + return ec.marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res)
  2207 +}
  2208 +
  2209 +func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
  2210 + defer func() {
  2211 + if r := recover(); r != nil {
  2212 + ec.Error(ctx, ec.Recover(ctx, r))
  2213 + ret = graphql.Null
  2214 + }
  2215 + }()
  2216 + fc := &graphql.FieldContext{
  2217 + Object: "__Type",
  2218 + Field: field,
  2219 + Args: nil,
  2220 + IsMethod: true,
  2221 + IsResolver: false,
  2222 + }
  2223 +
  2224 + ctx = graphql.WithFieldContext(ctx, fc)
  2225 + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
  2226 + ctx = rctx // use context from middleware stack in children
  2227 + return obj.OfType(), nil
  2228 + })
  2229 + if err != nil {
  2230 + ec.Error(ctx, err)
  2231 + return graphql.Null
  2232 + }
  2233 + if resTmp == nil {
  2234 + return graphql.Null
  2235 + }
  2236 + res := resTmp.(*introspection.Type)
  2237 + fc.Result = res
  2238 + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
  2239 +}
  2240 +
  2241 +// endregion **************************** field.gotpl *****************************
  2242 +
  2243 +// region **************************** input.gotpl *****************************
  2244 +
  2245 +func (ec *executionContext) unmarshalInputcreateUsersInput(ctx context.Context, obj interface{}) (model.CreateUsersInput, error) {
  2246 + var it model.CreateUsersInput
  2247 + var asMap = obj.(map[string]interface{})
  2248 +
  2249 + for k, v := range asMap {
  2250 + switch k {
  2251 + case "name":
  2252 + var err error
  2253 +
  2254 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("name"))
  2255 + it.Name, err = ec.unmarshalNString2string(ctx, v)
  2256 + if err != nil {
  2257 + return it, err
  2258 + }
  2259 + case "phone":
  2260 + var err error
  2261 +
  2262 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone"))
  2263 + it.Phone, err = ec.unmarshalNString2string(ctx, v)
  2264 + if err != nil {
  2265 + return it, err
  2266 + }
  2267 + }
  2268 + }
  2269 +
  2270 + return it, nil
  2271 +}
  2272 +
  2273 +func (ec *executionContext) unmarshalInputgetUsersInput(ctx context.Context, obj interface{}) (model.GetUsersInput, error) {
  2274 + var it model.GetUsersInput
  2275 + var asMap = obj.(map[string]interface{})
  2276 +
  2277 + for k, v := range asMap {
  2278 + switch k {
  2279 + case "id":
  2280 + var err error
  2281 +
  2282 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id"))
  2283 + it.ID, err = ec.unmarshalNInt2int(ctx, v)
  2284 + if err != nil {
  2285 + return it, err
  2286 + }
  2287 + }
  2288 + }
  2289 +
  2290 + return it, nil
  2291 +}
  2292 +
  2293 +func (ec *executionContext) unmarshalInputlistUsersInput(ctx context.Context, obj interface{}) (model.ListUsersInput, error) {
  2294 + var it model.ListUsersInput
  2295 + var asMap = obj.(map[string]interface{})
  2296 +
  2297 + for k, v := range asMap {
  2298 + switch k {
  2299 + case "offset":
  2300 + var err error
  2301 +
  2302 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("offset"))
  2303 + it.Offset, err = ec.unmarshalNInt2int(ctx, v)
  2304 + if err != nil {
  2305 + return it, err
  2306 + }
  2307 + case "limit":
  2308 + var err error
  2309 +
  2310 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("limit"))
  2311 + it.Limit, err = ec.unmarshalNInt2int(ctx, v)
  2312 + if err != nil {
  2313 + return it, err
  2314 + }
  2315 + }
  2316 + }
  2317 +
  2318 + return it, nil
  2319 +}
  2320 +
  2321 +func (ec *executionContext) unmarshalInputremoveUsersInput(ctx context.Context, obj interface{}) (model.RemoveUsersInput, error) {
  2322 + var it model.RemoveUsersInput
  2323 + var asMap = obj.(map[string]interface{})
  2324 +
  2325 + for k, v := range asMap {
  2326 + switch k {
  2327 + case "id":
  2328 + var err error
  2329 +
  2330 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id"))
  2331 + it.ID, err = ec.unmarshalNInt2int(ctx, v)
  2332 + if err != nil {
  2333 + return it, err
  2334 + }
  2335 + }
  2336 + }
  2337 +
  2338 + return it, nil
  2339 +}
  2340 +
  2341 +func (ec *executionContext) unmarshalInputupdateUsersInput(ctx context.Context, obj interface{}) (model.UpdateUsersInput, error) {
  2342 + var it model.UpdateUsersInput
  2343 + var asMap = obj.(map[string]interface{})
  2344 +
  2345 + for k, v := range asMap {
  2346 + switch k {
  2347 + case "id":
  2348 + var err error
  2349 +
  2350 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id"))
  2351 + it.ID, err = ec.unmarshalNInt2int(ctx, v)
  2352 + if err != nil {
  2353 + return it, err
  2354 + }
  2355 + case "name":
  2356 + var err error
  2357 +
  2358 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("name"))
  2359 + it.Name, err = ec.unmarshalOString2ᚖstring(ctx, v)
  2360 + if err != nil {
  2361 + return it, err
  2362 + }
  2363 + }
  2364 + }
  2365 +
  2366 + return it, nil
  2367 +}
  2368 +
  2369 +// endregion **************************** input.gotpl *****************************
  2370 +
  2371 +// region ************************** interface.gotpl ***************************
  2372 +
  2373 +// endregion ************************** interface.gotpl ***************************
  2374 +
  2375 +// region **************************** object.gotpl ****************************
  2376 +
  2377 +var mutationImplementors = []string{"Mutation"}
  2378 +
  2379 +func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler {
  2380 + fields := graphql.CollectFields(ec.OperationContext, sel, mutationImplementors)
  2381 +
  2382 + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{
  2383 + Object: "Mutation",
  2384 + })
  2385 +
  2386 + out := graphql.NewFieldSet(fields)
  2387 + var invalids uint32
  2388 + for i, field := range fields {
  2389 + switch field.Name {
  2390 + case "__typename":
  2391 + out.Values[i] = graphql.MarshalString("Mutation")
  2392 + case "createUsers":
  2393 + out.Values[i] = ec._Mutation_createUsers(ctx, field)
  2394 + if out.Values[i] == graphql.Null {
  2395 + invalids++
  2396 + }
  2397 + case "removeUsers":
  2398 + out.Values[i] = ec._Mutation_removeUsers(ctx, field)
  2399 + if out.Values[i] == graphql.Null {
  2400 + invalids++
  2401 + }
  2402 + case "updateUsers":
  2403 + out.Values[i] = ec._Mutation_updateUsers(ctx, field)
  2404 + if out.Values[i] == graphql.Null {
  2405 + invalids++
  2406 + }
  2407 + default:
  2408 + panic("unknown field " + strconv.Quote(field.Name))
  2409 + }
  2410 + }
  2411 + out.Dispatch()
  2412 + if invalids > 0 {
  2413 + return graphql.Null
  2414 + }
  2415 + return out
  2416 +}
  2417 +
  2418 +var queryImplementors = []string{"Query"}
  2419 +
  2420 +func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler {
  2421 + fields := graphql.CollectFields(ec.OperationContext, sel, queryImplementors)
  2422 +
  2423 + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{
  2424 + Object: "Query",
  2425 + })
  2426 +
  2427 + out := graphql.NewFieldSet(fields)
  2428 + var invalids uint32
  2429 + for i, field := range fields {
  2430 + switch field.Name {
  2431 + case "__typename":
  2432 + out.Values[i] = graphql.MarshalString("Query")
  2433 + case "getUsers":
  2434 + field := field
  2435 + out.Concurrently(i, func() (res graphql.Marshaler) {
  2436 + defer func() {
  2437 + if r := recover(); r != nil {
  2438 + ec.Error(ctx, ec.Recover(ctx, r))
  2439 + }
  2440 + }()
  2441 + res = ec._Query_getUsers(ctx, field)
  2442 + if res == graphql.Null {
  2443 + atomic.AddUint32(&invalids, 1)
  2444 + }
  2445 + return res
  2446 + })
  2447 + case "findUsers":
  2448 + field := field
  2449 + out.Concurrently(i, func() (res graphql.Marshaler) {
  2450 + defer func() {
  2451 + if r := recover(); r != nil {
  2452 + ec.Error(ctx, ec.Recover(ctx, r))
  2453 + }
  2454 + }()
  2455 + res = ec._Query_findUsers(ctx, field)
  2456 + return res
  2457 + })
  2458 + case "__type":
  2459 + out.Values[i] = ec._Query___type(ctx, field)
  2460 + case "__schema":
  2461 + out.Values[i] = ec._Query___schema(ctx, field)
  2462 + default:
  2463 + panic("unknown field " + strconv.Quote(field.Name))
  2464 + }
  2465 + }
  2466 + out.Dispatch()
  2467 + if invalids > 0 {
  2468 + return graphql.Null
  2469 + }
  2470 + return out
  2471 +}
  2472 +
  2473 +var roleImplementors = []string{"Role"}
  2474 +
  2475 +func (ec *executionContext) _Role(ctx context.Context, sel ast.SelectionSet, obj *model.Role) graphql.Marshaler {
  2476 + fields := graphql.CollectFields(ec.OperationContext, sel, roleImplementors)
  2477 +
  2478 + out := graphql.NewFieldSet(fields)
  2479 + var invalids uint32
  2480 + for i, field := range fields {
  2481 + switch field.Name {
  2482 + case "__typename":
  2483 + out.Values[i] = graphql.MarshalString("Role")
  2484 + case "id":
  2485 + out.Values[i] = ec._Role_id(ctx, field, obj)
  2486 + case "roleName":
  2487 + out.Values[i] = ec._Role_roleName(ctx, field, obj)
  2488 + case "parentId":
  2489 + out.Values[i] = ec._Role_parentId(ctx, field, obj)
  2490 + case "createTime":
  2491 + out.Values[i] = ec._Role_createTime(ctx, field, obj)
  2492 + case "updateTime":
  2493 + out.Values[i] = ec._Role_updateTime(ctx, field, obj)
  2494 + default:
  2495 + panic("unknown field " + strconv.Quote(field.Name))
  2496 + }
  2497 + }
  2498 + out.Dispatch()
  2499 + if invalids > 0 {
  2500 + return graphql.Null
  2501 + }
  2502 + return out
  2503 +}
  2504 +
  2505 +var usersImplementors = []string{"Users"}
  2506 +
  2507 +func (ec *executionContext) _Users(ctx context.Context, sel ast.SelectionSet, obj *model.Users) graphql.Marshaler {
  2508 + fields := graphql.CollectFields(ec.OperationContext, sel, usersImplementors)
  2509 +
  2510 + out := graphql.NewFieldSet(fields)
  2511 + var invalids uint32
  2512 + for i, field := range fields {
  2513 + switch field.Name {
  2514 + case "__typename":
  2515 + out.Values[i] = graphql.MarshalString("Users")
  2516 + case "name":
  2517 + out.Values[i] = ec._Users_name(ctx, field, obj)
  2518 + case "phone":
  2519 + out.Values[i] = ec._Users_phone(ctx, field, obj)
  2520 + case "roles":
  2521 + field := field
  2522 + out.Concurrently(i, func() (res graphql.Marshaler) {
  2523 + defer func() {
  2524 + if r := recover(); r != nil {
  2525 + ec.Error(ctx, ec.Recover(ctx, r))
  2526 + }
  2527 + }()
  2528 + res = ec._Users_roles(ctx, field, obj)
  2529 + return res
  2530 + })
  2531 + case "status":
  2532 + out.Values[i] = ec._Users_status(ctx, field, obj)
  2533 + case "adminType":
  2534 + out.Values[i] = ec._Users_adminType(ctx, field, obj)
  2535 + case "createTime":
  2536 + out.Values[i] = ec._Users_createTime(ctx, field, obj)
  2537 + case "updateTime":
  2538 + out.Values[i] = ec._Users_updateTime(ctx, field, obj)
  2539 + default:
  2540 + panic("unknown field " + strconv.Quote(field.Name))
  2541 + }
  2542 + }
  2543 + out.Dispatch()
  2544 + if invalids > 0 {
  2545 + return graphql.Null
  2546 + }
  2547 + return out
  2548 +}
  2549 +
  2550 +var __DirectiveImplementors = []string{"__Directive"}
  2551 +
  2552 +func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler {
  2553 + fields := graphql.CollectFields(ec.OperationContext, sel, __DirectiveImplementors)
  2554 +
  2555 + out := graphql.NewFieldSet(fields)
  2556 + var invalids uint32
  2557 + for i, field := range fields {
  2558 + switch field.Name {
  2559 + case "__typename":
  2560 + out.Values[i] = graphql.MarshalString("__Directive")
  2561 + case "name":
  2562 + out.Values[i] = ec.___Directive_name(ctx, field, obj)
  2563 + if out.Values[i] == graphql.Null {
  2564 + invalids++
  2565 + }
  2566 + case "description":
  2567 + out.Values[i] = ec.___Directive_description(ctx, field, obj)
  2568 + case "locations":
  2569 + out.Values[i] = ec.___Directive_locations(ctx, field, obj)
  2570 + if out.Values[i] == graphql.Null {
  2571 + invalids++
  2572 + }
  2573 + case "args":
  2574 + out.Values[i] = ec.___Directive_args(ctx, field, obj)
  2575 + if out.Values[i] == graphql.Null {
  2576 + invalids++
  2577 + }
  2578 + default:
  2579 + panic("unknown field " + strconv.Quote(field.Name))
  2580 + }
  2581 + }
  2582 + out.Dispatch()
  2583 + if invalids > 0 {
  2584 + return graphql.Null
  2585 + }
  2586 + return out
  2587 +}
  2588 +
  2589 +var __EnumValueImplementors = []string{"__EnumValue"}
  2590 +
  2591 +func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler {
  2592 + fields := graphql.CollectFields(ec.OperationContext, sel, __EnumValueImplementors)
  2593 +
  2594 + out := graphql.NewFieldSet(fields)
  2595 + var invalids uint32
  2596 + for i, field := range fields {
  2597 + switch field.Name {
  2598 + case "__typename":
  2599 + out.Values[i] = graphql.MarshalString("__EnumValue")
  2600 + case "name":
  2601 + out.Values[i] = ec.___EnumValue_name(ctx, field, obj)
  2602 + if out.Values[i] == graphql.Null {
  2603 + invalids++
  2604 + }
  2605 + case "description":
  2606 + out.Values[i] = ec.___EnumValue_description(ctx, field, obj)
  2607 + case "isDeprecated":
  2608 + out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj)
  2609 + if out.Values[i] == graphql.Null {
  2610 + invalids++
  2611 + }
  2612 + case "deprecationReason":
  2613 + out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj)
  2614 + default:
  2615 + panic("unknown field " + strconv.Quote(field.Name))
  2616 + }
  2617 + }
  2618 + out.Dispatch()
  2619 + if invalids > 0 {
  2620 + return graphql.Null
  2621 + }
  2622 + return out
  2623 +}
  2624 +
  2625 +var __FieldImplementors = []string{"__Field"}
  2626 +
  2627 +func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler {
  2628 + fields := graphql.CollectFields(ec.OperationContext, sel, __FieldImplementors)
  2629 +
  2630 + out := graphql.NewFieldSet(fields)
  2631 + var invalids uint32
  2632 + for i, field := range fields {
  2633 + switch field.Name {
  2634 + case "__typename":
  2635 + out.Values[i] = graphql.MarshalString("__Field")
  2636 + case "name":
  2637 + out.Values[i] = ec.___Field_name(ctx, field, obj)
  2638 + if out.Values[i] == graphql.Null {
  2639 + invalids++
  2640 + }
  2641 + case "description":
  2642 + out.Values[i] = ec.___Field_description(ctx, field, obj)
  2643 + case "args":
  2644 + out.Values[i] = ec.___Field_args(ctx, field, obj)
  2645 + if out.Values[i] == graphql.Null {
  2646 + invalids++
  2647 + }
  2648 + case "type":
  2649 + out.Values[i] = ec.___Field_type(ctx, field, obj)
  2650 + if out.Values[i] == graphql.Null {
  2651 + invalids++
  2652 + }
  2653 + case "isDeprecated":
  2654 + out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj)
  2655 + if out.Values[i] == graphql.Null {
  2656 + invalids++
  2657 + }
  2658 + case "deprecationReason":
  2659 + out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj)
  2660 + default:
  2661 + panic("unknown field " + strconv.Quote(field.Name))
  2662 + }
  2663 + }
  2664 + out.Dispatch()
  2665 + if invalids > 0 {
  2666 + return graphql.Null
  2667 + }
  2668 + return out
  2669 +}
  2670 +
  2671 +var __InputValueImplementors = []string{"__InputValue"}
  2672 +
  2673 +func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler {
  2674 + fields := graphql.CollectFields(ec.OperationContext, sel, __InputValueImplementors)
  2675 +
  2676 + out := graphql.NewFieldSet(fields)
  2677 + var invalids uint32
  2678 + for i, field := range fields {
  2679 + switch field.Name {
  2680 + case "__typename":
  2681 + out.Values[i] = graphql.MarshalString("__InputValue")
  2682 + case "name":
  2683 + out.Values[i] = ec.___InputValue_name(ctx, field, obj)
  2684 + if out.Values[i] == graphql.Null {
  2685 + invalids++
  2686 + }
  2687 + case "description":
  2688 + out.Values[i] = ec.___InputValue_description(ctx, field, obj)
  2689 + case "type":
  2690 + out.Values[i] = ec.___InputValue_type(ctx, field, obj)
  2691 + if out.Values[i] == graphql.Null {
  2692 + invalids++
  2693 + }
  2694 + case "defaultValue":
  2695 + out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj)
  2696 + default:
  2697 + panic("unknown field " + strconv.Quote(field.Name))
  2698 + }
  2699 + }
  2700 + out.Dispatch()
  2701 + if invalids > 0 {
  2702 + return graphql.Null
  2703 + }
  2704 + return out
  2705 +}
  2706 +
  2707 +var __SchemaImplementors = []string{"__Schema"}
  2708 +
  2709 +func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler {
  2710 + fields := graphql.CollectFields(ec.OperationContext, sel, __SchemaImplementors)
  2711 +
  2712 + out := graphql.NewFieldSet(fields)
  2713 + var invalids uint32
  2714 + for i, field := range fields {
  2715 + switch field.Name {
  2716 + case "__typename":
  2717 + out.Values[i] = graphql.MarshalString("__Schema")
  2718 + case "types":
  2719 + out.Values[i] = ec.___Schema_types(ctx, field, obj)
  2720 + if out.Values[i] == graphql.Null {
  2721 + invalids++
  2722 + }
  2723 + case "queryType":
  2724 + out.Values[i] = ec.___Schema_queryType(ctx, field, obj)
  2725 + if out.Values[i] == graphql.Null {
  2726 + invalids++
  2727 + }
  2728 + case "mutationType":
  2729 + out.Values[i] = ec.___Schema_mutationType(ctx, field, obj)
  2730 + case "subscriptionType":
  2731 + out.Values[i] = ec.___Schema_subscriptionType(ctx, field, obj)
  2732 + case "directives":
  2733 + out.Values[i] = ec.___Schema_directives(ctx, field, obj)
  2734 + if out.Values[i] == graphql.Null {
  2735 + invalids++
  2736 + }
  2737 + default:
  2738 + panic("unknown field " + strconv.Quote(field.Name))
  2739 + }
  2740 + }
  2741 + out.Dispatch()
  2742 + if invalids > 0 {
  2743 + return graphql.Null
  2744 + }
  2745 + return out
  2746 +}
  2747 +
  2748 +var __TypeImplementors = []string{"__Type"}
  2749 +
  2750 +func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler {
  2751 + fields := graphql.CollectFields(ec.OperationContext, sel, __TypeImplementors)
  2752 +
  2753 + out := graphql.NewFieldSet(fields)
  2754 + var invalids uint32
  2755 + for i, field := range fields {
  2756 + switch field.Name {
  2757 + case "__typename":
  2758 + out.Values[i] = graphql.MarshalString("__Type")
  2759 + case "kind":
  2760 + out.Values[i] = ec.___Type_kind(ctx, field, obj)
  2761 + if out.Values[i] == graphql.Null {
  2762 + invalids++
  2763 + }
  2764 + case "name":
  2765 + out.Values[i] = ec.___Type_name(ctx, field, obj)
  2766 + case "description":
  2767 + out.Values[i] = ec.___Type_description(ctx, field, obj)
  2768 + case "fields":
  2769 + out.Values[i] = ec.___Type_fields(ctx, field, obj)
  2770 + case "interfaces":
  2771 + out.Values[i] = ec.___Type_interfaces(ctx, field, obj)
  2772 + case "possibleTypes":
  2773 + out.Values[i] = ec.___Type_possibleTypes(ctx, field, obj)
  2774 + case "enumValues":
  2775 + out.Values[i] = ec.___Type_enumValues(ctx, field, obj)
  2776 + case "inputFields":
  2777 + out.Values[i] = ec.___Type_inputFields(ctx, field, obj)
  2778 + case "ofType":
  2779 + out.Values[i] = ec.___Type_ofType(ctx, field, obj)
  2780 + default:
  2781 + panic("unknown field " + strconv.Quote(field.Name))
  2782 + }
  2783 + }
  2784 + out.Dispatch()
  2785 + if invalids > 0 {
  2786 + return graphql.Null
  2787 + }
  2788 + return out
  2789 +}
  2790 +
  2791 +// endregion **************************** object.gotpl ****************************
  2792 +
  2793 +// region ***************************** type.gotpl *****************************
  2794 +
  2795 +func (ec *executionContext) unmarshalNBoolean2bool(ctx context.Context, v interface{}) (bool, error) {
  2796 + res, err := graphql.UnmarshalBoolean(v)
  2797 + return res, graphql.ErrorOnPath(ctx, err)
  2798 +}
  2799 +
  2800 +func (ec *executionContext) marshalNBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler {
  2801 + res := graphql.MarshalBoolean(v)
  2802 + if res == graphql.Null {
  2803 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  2804 + ec.Errorf(ctx, "must not be null")
  2805 + }
  2806 + }
  2807 + return res
  2808 +}
  2809 +
  2810 +func (ec *executionContext) unmarshalNInt2int(ctx context.Context, v interface{}) (int, error) {
  2811 + res, err := graphql.UnmarshalInt(v)
  2812 + return res, graphql.ErrorOnPath(ctx, err)
  2813 +}
  2814 +
  2815 +func (ec *executionContext) marshalNInt2int(ctx context.Context, sel ast.SelectionSet, v int) graphql.Marshaler {
  2816 + res := graphql.MarshalInt(v)
  2817 + if res == graphql.Null {
  2818 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  2819 + ec.Errorf(ctx, "must not be null")
  2820 + }
  2821 + }
  2822 + return res
  2823 +}
  2824 +
  2825 +func (ec *executionContext) marshalNRole2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐRole(ctx context.Context, sel ast.SelectionSet, v *model.Role) graphql.Marshaler {
  2826 + if v == nil {
  2827 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  2828 + ec.Errorf(ctx, "must not be null")
  2829 + }
  2830 + return graphql.Null
  2831 + }
  2832 + return ec._Role(ctx, sel, v)
  2833 +}
  2834 +
  2835 +func (ec *executionContext) unmarshalNString2string(ctx context.Context, v interface{}) (string, error) {
  2836 + res, err := graphql.UnmarshalString(v)
  2837 + return res, graphql.ErrorOnPath(ctx, err)
  2838 +}
  2839 +
  2840 +func (ec *executionContext) marshalNString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler {
  2841 + res := graphql.MarshalString(v)
  2842 + if res == graphql.Null {
  2843 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  2844 + ec.Errorf(ctx, "must not be null")
  2845 + }
  2846 + }
  2847 + return res
  2848 +}
  2849 +
  2850 +func (ec *executionContext) marshalNUsers2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx context.Context, sel ast.SelectionSet, v model.Users) graphql.Marshaler {
  2851 + return ec._Users(ctx, sel, &v)
  2852 +}
  2853 +
  2854 +func (ec *executionContext) marshalNUsers2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx context.Context, sel ast.SelectionSet, v *model.Users) graphql.Marshaler {
  2855 + if v == nil {
  2856 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  2857 + ec.Errorf(ctx, "must not be null")
  2858 + }
  2859 + return graphql.Null
  2860 + }
  2861 + return ec._Users(ctx, sel, v)
  2862 +}
  2863 +
  2864 +func (ec *executionContext) marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx context.Context, sel ast.SelectionSet, v introspection.Directive) graphql.Marshaler {
  2865 + return ec.___Directive(ctx, sel, &v)
  2866 +}
  2867 +
  2868 +func (ec *executionContext) marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Directive) graphql.Marshaler {
  2869 + ret := make(graphql.Array, len(v))
  2870 + var wg sync.WaitGroup
  2871 + isLen1 := len(v) == 1
  2872 + if !isLen1 {
  2873 + wg.Add(len(v))
  2874 + }
  2875 + for i := range v {
  2876 + i := i
  2877 + fc := &graphql.FieldContext{
  2878 + Index: &i,
  2879 + Result: &v[i],
  2880 + }
  2881 + ctx := graphql.WithFieldContext(ctx, fc)
  2882 + f := func(i int) {
  2883 + defer func() {
  2884 + if r := recover(); r != nil {
  2885 + ec.Error(ctx, ec.Recover(ctx, r))
  2886 + ret = nil
  2887 + }
  2888 + }()
  2889 + if !isLen1 {
  2890 + defer wg.Done()
  2891 + }
  2892 + ret[i] = ec.marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx, sel, v[i])
  2893 + }
  2894 + if isLen1 {
  2895 + f(i)
  2896 + } else {
  2897 + go f(i)
  2898 + }
  2899 +
  2900 + }
  2901 + wg.Wait()
  2902 + return ret
  2903 +}
  2904 +
  2905 +func (ec *executionContext) unmarshalN__DirectiveLocation2string(ctx context.Context, v interface{}) (string, error) {
  2906 + res, err := graphql.UnmarshalString(v)
  2907 + return res, graphql.ErrorOnPath(ctx, err)
  2908 +}
  2909 +
  2910 +func (ec *executionContext) marshalN__DirectiveLocation2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler {
  2911 + res := graphql.MarshalString(v)
  2912 + if res == graphql.Null {
  2913 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  2914 + ec.Errorf(ctx, "must not be null")
  2915 + }
  2916 + }
  2917 + return res
  2918 +}
  2919 +
  2920 +func (ec *executionContext) unmarshalN__DirectiveLocation2ᚕstringᚄ(ctx context.Context, v interface{}) ([]string, error) {
  2921 + var vSlice []interface{}
  2922 + if v != nil {
  2923 + if tmp1, ok := v.([]interface{}); ok {
  2924 + vSlice = tmp1
  2925 + } else {
  2926 + vSlice = []interface{}{v}
  2927 + }
  2928 + }
  2929 + var err error
  2930 + res := make([]string, len(vSlice))
  2931 + for i := range vSlice {
  2932 + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i))
  2933 + res[i], err = ec.unmarshalN__DirectiveLocation2string(ctx, vSlice[i])
  2934 + if err != nil {
  2935 + return nil, err
  2936 + }
  2937 + }
  2938 + return res, nil
  2939 +}
  2940 +
  2941 +func (ec *executionContext) marshalN__DirectiveLocation2ᚕstringᚄ(ctx context.Context, sel ast.SelectionSet, v []string) graphql.Marshaler {
  2942 + ret := make(graphql.Array, len(v))
  2943 + var wg sync.WaitGroup
  2944 + isLen1 := len(v) == 1
  2945 + if !isLen1 {
  2946 + wg.Add(len(v))
  2947 + }
  2948 + for i := range v {
  2949 + i := i
  2950 + fc := &graphql.FieldContext{
  2951 + Index: &i,
  2952 + Result: &v[i],
  2953 + }
  2954 + ctx := graphql.WithFieldContext(ctx, fc)
  2955 + f := func(i int) {
  2956 + defer func() {
  2957 + if r := recover(); r != nil {
  2958 + ec.Error(ctx, ec.Recover(ctx, r))
  2959 + ret = nil
  2960 + }
  2961 + }()
  2962 + if !isLen1 {
  2963 + defer wg.Done()
  2964 + }
  2965 + ret[i] = ec.marshalN__DirectiveLocation2string(ctx, sel, v[i])
  2966 + }
  2967 + if isLen1 {
  2968 + f(i)
  2969 + } else {
  2970 + go f(i)
  2971 + }
  2972 +
  2973 + }
  2974 + wg.Wait()
  2975 + return ret
  2976 +}
  2977 +
  2978 +func (ec *executionContext) marshalN__EnumValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx context.Context, sel ast.SelectionSet, v introspection.EnumValue) graphql.Marshaler {
  2979 + return ec.___EnumValue(ctx, sel, &v)
  2980 +}
  2981 +
  2982 +func (ec *executionContext) marshalN__Field2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx context.Context, sel ast.SelectionSet, v introspection.Field) graphql.Marshaler {
  2983 + return ec.___Field(ctx, sel, &v)
  2984 +}
  2985 +
  2986 +func (ec *executionContext) marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx context.Context, sel ast.SelectionSet, v introspection.InputValue) graphql.Marshaler {
  2987 + return ec.___InputValue(ctx, sel, &v)
  2988 +}
  2989 +
  2990 +func (ec *executionContext) marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.InputValue) graphql.Marshaler {
  2991 + ret := make(graphql.Array, len(v))
  2992 + var wg sync.WaitGroup
  2993 + isLen1 := len(v) == 1
  2994 + if !isLen1 {
  2995 + wg.Add(len(v))
  2996 + }
  2997 + for i := range v {
  2998 + i := i
  2999 + fc := &graphql.FieldContext{
  3000 + Index: &i,
  3001 + Result: &v[i],
  3002 + }
  3003 + ctx := graphql.WithFieldContext(ctx, fc)
  3004 + f := func(i int) {
  3005 + defer func() {
  3006 + if r := recover(); r != nil {
  3007 + ec.Error(ctx, ec.Recover(ctx, r))
  3008 + ret = nil
  3009 + }
  3010 + }()
  3011 + if !isLen1 {
  3012 + defer wg.Done()
  3013 + }
  3014 + ret[i] = ec.marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, sel, v[i])
  3015 + }
  3016 + if isLen1 {
  3017 + f(i)
  3018 + } else {
  3019 + go f(i)
  3020 + }
  3021 +
  3022 + }
  3023 + wg.Wait()
  3024 + return ret
  3025 +}
  3026 +
  3027 +func (ec *executionContext) marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v introspection.Type) graphql.Marshaler {
  3028 + return ec.___Type(ctx, sel, &v)
  3029 +}
  3030 +
  3031 +func (ec *executionContext) marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Type) graphql.Marshaler {
  3032 + ret := make(graphql.Array, len(v))
  3033 + var wg sync.WaitGroup
  3034 + isLen1 := len(v) == 1
  3035 + if !isLen1 {
  3036 + wg.Add(len(v))
  3037 + }
  3038 + for i := range v {
  3039 + i := i
  3040 + fc := &graphql.FieldContext{
  3041 + Index: &i,
  3042 + Result: &v[i],
  3043 + }
  3044 + ctx := graphql.WithFieldContext(ctx, fc)
  3045 + f := func(i int) {
  3046 + defer func() {
  3047 + if r := recover(); r != nil {
  3048 + ec.Error(ctx, ec.Recover(ctx, r))
  3049 + ret = nil
  3050 + }
  3051 + }()
  3052 + if !isLen1 {
  3053 + defer wg.Done()
  3054 + }
  3055 + ret[i] = ec.marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, sel, v[i])
  3056 + }
  3057 + if isLen1 {
  3058 + f(i)
  3059 + } else {
  3060 + go f(i)
  3061 + }
  3062 +
  3063 + }
  3064 + wg.Wait()
  3065 + return ret
  3066 +}
  3067 +
  3068 +func (ec *executionContext) marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v *introspection.Type) graphql.Marshaler {
  3069 + if v == nil {
  3070 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  3071 + ec.Errorf(ctx, "must not be null")
  3072 + }
  3073 + return graphql.Null
  3074 + }
  3075 + return ec.___Type(ctx, sel, v)
  3076 +}
  3077 +
  3078 +func (ec *executionContext) unmarshalN__TypeKind2string(ctx context.Context, v interface{}) (string, error) {
  3079 + res, err := graphql.UnmarshalString(v)
  3080 + return res, graphql.ErrorOnPath(ctx, err)
  3081 +}
  3082 +
  3083 +func (ec *executionContext) marshalN__TypeKind2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler {
  3084 + res := graphql.MarshalString(v)
  3085 + if res == graphql.Null {
  3086 + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
  3087 + ec.Errorf(ctx, "must not be null")
  3088 + }
  3089 + }
  3090 + return res
  3091 +}
  3092 +
  3093 +func (ec *executionContext) unmarshalNcreateUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐCreateUsersInput(ctx context.Context, v interface{}) (model.CreateUsersInput, error) {
  3094 + res, err := ec.unmarshalInputcreateUsersInput(ctx, v)
  3095 + return res, graphql.ErrorOnPath(ctx, err)
  3096 +}
  3097 +
  3098 +func (ec *executionContext) unmarshalNgetUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐGetUsersInput(ctx context.Context, v interface{}) (model.GetUsersInput, error) {
  3099 + res, err := ec.unmarshalInputgetUsersInput(ctx, v)
  3100 + return res, graphql.ErrorOnPath(ctx, err)
  3101 +}
  3102 +
  3103 +func (ec *executionContext) unmarshalNlistUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐListUsersInput(ctx context.Context, v interface{}) (model.ListUsersInput, error) {
  3104 + res, err := ec.unmarshalInputlistUsersInput(ctx, v)
  3105 + return res, graphql.ErrorOnPath(ctx, err)
  3106 +}
  3107 +
  3108 +func (ec *executionContext) unmarshalNremoveUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐRemoveUsersInput(ctx context.Context, v interface{}) (model.RemoveUsersInput, error) {
  3109 + res, err := ec.unmarshalInputremoveUsersInput(ctx, v)
  3110 + return res, graphql.ErrorOnPath(ctx, err)
  3111 +}
  3112 +
  3113 +func (ec *executionContext) unmarshalNupdateUsersInput2githubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUpdateUsersInput(ctx context.Context, v interface{}) (model.UpdateUsersInput, error) {
  3114 + res, err := ec.unmarshalInputupdateUsersInput(ctx, v)
  3115 + return res, graphql.ErrorOnPath(ctx, err)
  3116 +}
  3117 +
  3118 +func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interface{}) (bool, error) {
  3119 + res, err := graphql.UnmarshalBoolean(v)
  3120 + return res, graphql.ErrorOnPath(ctx, err)
  3121 +}
  3122 +
  3123 +func (ec *executionContext) marshalOBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler {
  3124 + return graphql.MarshalBoolean(v)
  3125 +}
  3126 +
  3127 +func (ec *executionContext) unmarshalOBoolean2ᚖbool(ctx context.Context, v interface{}) (*bool, error) {
  3128 + if v == nil {
  3129 + return nil, nil
  3130 + }
  3131 + res, err := graphql.UnmarshalBoolean(v)
  3132 + return &res, graphql.ErrorOnPath(ctx, err)
  3133 +}
  3134 +
  3135 +func (ec *executionContext) marshalOBoolean2ᚖbool(ctx context.Context, sel ast.SelectionSet, v *bool) graphql.Marshaler {
  3136 + if v == nil {
  3137 + return graphql.Null
  3138 + }
  3139 + return graphql.MarshalBoolean(*v)
  3140 +}
  3141 +
  3142 +func (ec *executionContext) unmarshalOInt2ᚖint(ctx context.Context, v interface{}) (*int, error) {
  3143 + if v == nil {
  3144 + return nil, nil
  3145 + }
  3146 + res, err := graphql.UnmarshalInt(v)
  3147 + return &res, graphql.ErrorOnPath(ctx, err)
  3148 +}
  3149 +
  3150 +func (ec *executionContext) marshalOInt2ᚖint(ctx context.Context, sel ast.SelectionSet, v *int) graphql.Marshaler {
  3151 + if v == nil {
  3152 + return graphql.Null
  3153 + }
  3154 + return graphql.MarshalInt(*v)
  3155 +}
  3156 +
  3157 +func (ec *executionContext) marshalORole2ᚕᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐRoleᚄ(ctx context.Context, sel ast.SelectionSet, v []*model.Role) graphql.Marshaler {
  3158 + if v == nil {
  3159 + return graphql.Null
  3160 + }
  3161 + ret := make(graphql.Array, len(v))
  3162 + var wg sync.WaitGroup
  3163 + isLen1 := len(v) == 1
  3164 + if !isLen1 {
  3165 + wg.Add(len(v))
  3166 + }
  3167 + for i := range v {
  3168 + i := i
  3169 + fc := &graphql.FieldContext{
  3170 + Index: &i,
  3171 + Result: &v[i],
  3172 + }
  3173 + ctx := graphql.WithFieldContext(ctx, fc)
  3174 + f := func(i int) {
  3175 + defer func() {
  3176 + if r := recover(); r != nil {
  3177 + ec.Error(ctx, ec.Recover(ctx, r))
  3178 + ret = nil
  3179 + }
  3180 + }()
  3181 + if !isLen1 {
  3182 + defer wg.Done()
  3183 + }
  3184 + ret[i] = ec.marshalNRole2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐRole(ctx, sel, v[i])
  3185 + }
  3186 + if isLen1 {
  3187 + f(i)
  3188 + } else {
  3189 + go f(i)
  3190 + }
  3191 +
  3192 + }
  3193 + wg.Wait()
  3194 + return ret
  3195 +}
  3196 +
  3197 +func (ec *executionContext) unmarshalOString2string(ctx context.Context, v interface{}) (string, error) {
  3198 + res, err := graphql.UnmarshalString(v)
  3199 + return res, graphql.ErrorOnPath(ctx, err)
  3200 +}
  3201 +
  3202 +func (ec *executionContext) marshalOString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler {
  3203 + return graphql.MarshalString(v)
  3204 +}
  3205 +
  3206 +func (ec *executionContext) unmarshalOString2ᚖstring(ctx context.Context, v interface{}) (*string, error) {
  3207 + if v == nil {
  3208 + return nil, nil
  3209 + }
  3210 + res, err := graphql.UnmarshalString(v)
  3211 + return &res, graphql.ErrorOnPath(ctx, err)
  3212 +}
  3213 +
  3214 +func (ec *executionContext) marshalOString2ᚖstring(ctx context.Context, sel ast.SelectionSet, v *string) graphql.Marshaler {
  3215 + if v == nil {
  3216 + return graphql.Null
  3217 + }
  3218 + return graphql.MarshalString(*v)
  3219 +}
  3220 +
  3221 +func (ec *executionContext) marshalOUsers2ᚕᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsersᚄ(ctx context.Context, sel ast.SelectionSet, v []*model.Users) graphql.Marshaler {
  3222 + if v == nil {
  3223 + return graphql.Null
  3224 + }
  3225 + ret := make(graphql.Array, len(v))
  3226 + var wg sync.WaitGroup
  3227 + isLen1 := len(v) == 1
  3228 + if !isLen1 {
  3229 + wg.Add(len(v))
  3230 + }
  3231 + for i := range v {
  3232 + i := i
  3233 + fc := &graphql.FieldContext{
  3234 + Index: &i,
  3235 + Result: &v[i],
  3236 + }
  3237 + ctx := graphql.WithFieldContext(ctx, fc)
  3238 + f := func(i int) {
  3239 + defer func() {
  3240 + if r := recover(); r != nil {
  3241 + ec.Error(ctx, ec.Recover(ctx, r))
  3242 + ret = nil
  3243 + }
  3244 + }()
  3245 + if !isLen1 {
  3246 + defer wg.Done()
  3247 + }
  3248 + ret[i] = ec.marshalNUsers2ᚖgithubᚗcomᚋtiptokᚋgodevpᚋpkgᚋportᚋgraphqlᚋgraphᚋmodelᚐUsers(ctx, sel, v[i])
  3249 + }
  3250 + if isLen1 {
  3251 + f(i)
  3252 + } else {
  3253 + go f(i)
  3254 + }
  3255 +
  3256 + }
  3257 + wg.Wait()
  3258 + return ret
  3259 +}
  3260 +
  3261 +func (ec *executionContext) marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.EnumValue) graphql.Marshaler {
  3262 + if v == nil {
  3263 + return graphql.Null
  3264 + }
  3265 + ret := make(graphql.Array, len(v))
  3266 + var wg sync.WaitGroup
  3267 + isLen1 := len(v) == 1
  3268 + if !isLen1 {
  3269 + wg.Add(len(v))
  3270 + }
  3271 + for i := range v {
  3272 + i := i
  3273 + fc := &graphql.FieldContext{
  3274 + Index: &i,
  3275 + Result: &v[i],
  3276 + }
  3277 + ctx := graphql.WithFieldContext(ctx, fc)
  3278 + f := func(i int) {
  3279 + defer func() {
  3280 + if r := recover(); r != nil {
  3281 + ec.Error(ctx, ec.Recover(ctx, r))
  3282 + ret = nil
  3283 + }
  3284 + }()
  3285 + if !isLen1 {
  3286 + defer wg.Done()
  3287 + }
  3288 + ret[i] = ec.marshalN__EnumValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx, sel, v[i])
  3289 + }
  3290 + if isLen1 {
  3291 + f(i)
  3292 + } else {
  3293 + go f(i)
  3294 + }
  3295 +
  3296 + }
  3297 + wg.Wait()
  3298 + return ret
  3299 +}
  3300 +
  3301 +func (ec *executionContext) marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐFieldᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Field) graphql.Marshaler {
  3302 + if v == nil {
  3303 + return graphql.Null
  3304 + }
  3305 + ret := make(graphql.Array, len(v))
  3306 + var wg sync.WaitGroup
  3307 + isLen1 := len(v) == 1
  3308 + if !isLen1 {
  3309 + wg.Add(len(v))
  3310 + }
  3311 + for i := range v {
  3312 + i := i
  3313 + fc := &graphql.FieldContext{
  3314 + Index: &i,
  3315 + Result: &v[i],
  3316 + }
  3317 + ctx := graphql.WithFieldContext(ctx, fc)
  3318 + f := func(i int) {
  3319 + defer func() {
  3320 + if r := recover(); r != nil {
  3321 + ec.Error(ctx, ec.Recover(ctx, r))
  3322 + ret = nil
  3323 + }
  3324 + }()
  3325 + if !isLen1 {
  3326 + defer wg.Done()
  3327 + }
  3328 + ret[i] = ec.marshalN__Field2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx, sel, v[i])
  3329 + }
  3330 + if isLen1 {
  3331 + f(i)
  3332 + } else {
  3333 + go f(i)
  3334 + }
  3335 +
  3336 + }
  3337 + wg.Wait()
  3338 + return ret
  3339 +}
  3340 +
  3341 +func (ec *executionContext) marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.InputValue) graphql.Marshaler {
  3342 + if v == nil {
  3343 + return graphql.Null
  3344 + }
  3345 + ret := make(graphql.Array, len(v))
  3346 + var wg sync.WaitGroup
  3347 + isLen1 := len(v) == 1
  3348 + if !isLen1 {
  3349 + wg.Add(len(v))
  3350 + }
  3351 + for i := range v {
  3352 + i := i
  3353 + fc := &graphql.FieldContext{
  3354 + Index: &i,
  3355 + Result: &v[i],
  3356 + }
  3357 + ctx := graphql.WithFieldContext(ctx, fc)
  3358 + f := func(i int) {
  3359 + defer func() {
  3360 + if r := recover(); r != nil {
  3361 + ec.Error(ctx, ec.Recover(ctx, r))
  3362 + ret = nil
  3363 + }
  3364 + }()
  3365 + if !isLen1 {
  3366 + defer wg.Done()
  3367 + }
  3368 + ret[i] = ec.marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, sel, v[i])
  3369 + }
  3370 + if isLen1 {
  3371 + f(i)
  3372 + } else {
  3373 + go f(i)
  3374 + }
  3375 +
  3376 + }
  3377 + wg.Wait()
  3378 + return ret
  3379 +}
  3380 +
  3381 +func (ec *executionContext) marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx context.Context, sel ast.SelectionSet, v *introspection.Schema) graphql.Marshaler {
  3382 + if v == nil {
  3383 + return graphql.Null
  3384 + }
  3385 + return ec.___Schema(ctx, sel, v)
  3386 +}
  3387 +
  3388 +func (ec *executionContext) marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Type) graphql.Marshaler {
  3389 + if v == nil {
  3390 + return graphql.Null
  3391 + }
  3392 + ret := make(graphql.Array, len(v))
  3393 + var wg sync.WaitGroup
  3394 + isLen1 := len(v) == 1
  3395 + if !isLen1 {
  3396 + wg.Add(len(v))
  3397 + }
  3398 + for i := range v {
  3399 + i := i
  3400 + fc := &graphql.FieldContext{
  3401 + Index: &i,
  3402 + Result: &v[i],
  3403 + }
  3404 + ctx := graphql.WithFieldContext(ctx, fc)
  3405 + f := func(i int) {
  3406 + defer func() {
  3407 + if r := recover(); r != nil {
  3408 + ec.Error(ctx, ec.Recover(ctx, r))
  3409 + ret = nil
  3410 + }
  3411 + }()
  3412 + if !isLen1 {
  3413 + defer wg.Done()
  3414 + }
  3415 + ret[i] = ec.marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, sel, v[i])
  3416 + }
  3417 + if isLen1 {
  3418 + f(i)
  3419 + } else {
  3420 + go f(i)
  3421 + }
  3422 +
  3423 + }
  3424 + wg.Wait()
  3425 + return ret
  3426 +}
  3427 +
  3428 +func (ec *executionContext) marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v *introspection.Type) graphql.Marshaler {
  3429 + if v == nil {
  3430 + return graphql.Null
  3431 + }
  3432 + return ec.___Type(ctx, sel, v)
  3433 +}
  3434 +
  3435 +// endregion ***************************** type.gotpl *****************************
  1 +// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.
  2 +
  3 +package model
  4 +
  5 +type Role struct {
  6 + ID *int `json:"id"`
  7 + RoleName *string `json:"roleName"`
  8 + ParentID *int `json:"parentId"`
  9 + CreateTime *string `json:"createTime"`
  10 + UpdateTime *string `json:"updateTime"`
  11 +}
  12 +
  13 +type CreateUsersInput struct {
  14 + Name string `json:"name"`
  15 + Phone string `json:"phone"`
  16 +}
  17 +
  18 +type GetUsersInput struct {
  19 + ID int `json:"id"`
  20 +}
  21 +
  22 +type ListUsersInput struct {
  23 + Offset int `json:"offset"`
  24 + Limit int `json:"limit"`
  25 +}
  26 +
  27 +type RemoveUsersInput struct {
  28 + ID int `json:"id"`
  29 +}
  30 +
  31 +type UpdateUsersInput struct {
  32 + ID int `json:"id"`
  33 + Name *string `json:"name"`
  34 +}
  1 +package model
  2 +
  3 +type Users struct {
  4 + Name *string `json:"name"`
  5 + Phone *string `json:"phone"`
  6 + Roles []*int `json:"roles"`
  7 + Status *int `json:"status"`
  8 + AdminType *int `json:"adminType"`
  9 + CreateTime *string `json:"createTime"`
  10 + UpdateTime *string `json:"updateTime"`
  11 +}
  1 +package graph
  2 +
  3 +// This file will not be regenerated automatically.
  4 +//
  5 +// It serves as dependency injection for your app, add any dependencies you require here.
  6 +
  7 +type Resolver struct{}
  1 +## type
  2 +type Users{
  3 + name: String
  4 + phone: String
  5 + roles: [Role!]
  6 + status: Int
  7 + adminType: Int
  8 + createTime: String
  9 + updateTime: String
  10 +}
  11 +type Role{
  12 + id: Int
  13 + roleName: String
  14 + parentId: Int
  15 + createTime: String
  16 + updateTime: String
  17 +}
  18 +
  19 +## user input
  20 +input createUsersInput{
  21 + name: String!
  22 + phone: String!
  23 +}
  24 +input updateUsersInput{
  25 + id: Int!
  26 + name: String
  27 +}
  28 +input removeUsersInput{
  29 + id: Int!
  30 +}
  31 +input getUsersInput{
  32 + id: Int!
  33 +}
  34 +input listUsersInput{
  35 + offset: Int!
  36 + limit: Int!
  37 +}
  38 +
  39 +type Query {
  40 + getUsers(input : getUsersInput!): Users!
  41 + findUsers(input : listUsersInput!): [Users!]
  42 +}
  43 +
  44 +type Mutation{
  45 + createUsers(input : createUsersInput!): Users!
  46 + removeUsers(input : removeUsersInput!): Users!
  47 + updateUsers(input : updateUsersInput!): Users!
  48 +}
  1 +package graph
  2 +
  3 +// This file will be automatically regenerated based on the schema, any resolver implementations
  4 +// will be copied through when generating and any unknown code will be moved to the end.
  5 +
  6 +import (
  7 + "context"
  8 + "fmt"
  9 + "github.com/tiptok/godevp/pkg/domain/role"
  10 +
  11 + "github.com/tiptok/gocomm/common"
  12 + "github.com/tiptok/godevp/pkg/application/users/command"
  13 + "github.com/tiptok/godevp/pkg/application/users/query"
  14 + "github.com/tiptok/godevp/pkg/application/users/service"
  15 + domain "github.com/tiptok/godevp/pkg/domain/users"
  16 + "github.com/tiptok/godevp/pkg/port/graphql/graph/generated"
  17 + "github.com/tiptok/godevp/pkg/port/graphql/graph/model"
  18 +)
  19 +
  20 +func (r *mutationResolver) CreateUsers(ctx context.Context, input model.CreateUsersInput) (*model.Users, error) {
  21 + usersService := service.NewUsersService(nil)
  22 + createUsersCommand := &command.CreateUsersCommand{
  23 + Name: input.Name,
  24 + Phone: input.Phone,
  25 + }
  26 + data, err := usersService.CreateUsers(createUsersCommand)
  27 + if err != nil {
  28 + return nil, err
  29 + }
  30 + if user, ok := data.(*domain.Users); ok {
  31 + return &model.Users{
  32 + Name: &user.Name,
  33 + Phone: &user.Phone,
  34 + }, nil
  35 + }
  36 + return nil, fmt.Errorf("type error except: domain.Users")
  37 +}
  38 +
  39 +func (r *mutationResolver) RemoveUsers(ctx context.Context, input model.RemoveUsersInput) (*model.Users, error) {
  40 + panic(fmt.Errorf("not implemented"))
  41 +}
  42 +
  43 +func (r *mutationResolver) UpdateUsers(ctx context.Context, input model.UpdateUsersInput) (*model.Users, error) {
  44 + panic(fmt.Errorf("not implemented"))
  45 +}
  46 +
  47 +func (r *queryResolver) GetUsers(ctx context.Context, input model.GetUsersInput) (*model.Users, error) {
  48 + usersService := service.NewUsersService(nil)
  49 + getUsersCommand := &query.GetUsersQuery{
  50 + UsersId: int64(input.ID),
  51 + }
  52 + data, err := usersService.GetUsers(getUsersCommand)
  53 + if err != nil {
  54 + return nil, err
  55 + }
  56 + if user, ok := data.(*domain.Users); ok {
  57 + return &model.Users{
  58 + Name: &user.Name,
  59 + Phone: &user.Phone,
  60 + Status: &user.Status,
  61 + }, nil
  62 + }
  63 + return nil, fmt.Errorf("type error except: domain.Users")
  64 +}
  65 +
  66 +func (r *queryResolver) FindUsers(ctx context.Context, input model.ListUsersInput) ([]*model.Users, error) {
  67 + usersService := service.NewUsersService(nil)
  68 + getUsersCommand := &query.ListUsersQuery{
  69 + Limit: input.Limit,
  70 + Offset: input.Offset,
  71 + }
  72 + data, err := usersService.ListUsers(getUsersCommand)
  73 + if err != nil {
  74 + return nil, err
  75 + }
  76 + if userMap, ok := data.(map[string]interface{}); ok {
  77 + users := userMap["users"].([]*domain.Users)
  78 + var ret []*model.Users
  79 + for _, user := range users {
  80 + createTime := common.AssertString(user.CreateTime.Unix())
  81 + updateTime := common.AssertString(user.UpdateTime.Unix())
  82 + ret = append(ret, &model.Users{
  83 + Name: &user.Name,
  84 + Phone: &user.Phone,
  85 + Status: &user.Status,
  86 + AdminType: &user.AdminType,
  87 + CreateTime: &createTime,
  88 + UpdateTime: &updateTime,
  89 + })
  90 + }
  91 + return ret, nil
  92 + }
  93 + return nil, fmt.Errorf("type error except: domain.Users")
  94 +}
  95 +
  96 +func (r *usersResolver) Roles(ctx context.Context, obj *model.Users) ([]*model.Role, error) {
  97 + var ro = &role.Role{
  98 + Id: 1,
  99 + RoleName: "ccc",
  100 + ParentId: 1,
  101 + }
  102 + var id = int(ro.Id)
  103 + return []*model.Role{
  104 + &model.Role{
  105 + ID: &id,
  106 + RoleName: &ro.RoleName,
  107 + },
  108 + &model.Role{
  109 + ID: &id,
  110 + RoleName: &ro.RoleName,
  111 + },
  112 + }, nil
  113 +}
  114 +
  115 +// Mutation returns generated.MutationResolver implementation.
  116 +func (r *Resolver) Mutation() generated.MutationResolver { return &mutationResolver{r} }
  117 +
  118 +// Query returns generated.QueryResolver implementation.
  119 +func (r *Resolver) Query() generated.QueryResolver { return &queryResolver{r} }
  120 +
  121 +// Users returns generated.UsersResolver implementation.
  122 +func (r *Resolver) Users() generated.UsersResolver { return &usersResolver{r} }
  123 +
  124 +type mutationResolver struct{ *Resolver }
  125 +type queryResolver struct{ *Resolver }
  126 +type usersResolver struct{ *Resolver }
  1 +package main
  2 +
  3 +import (
  4 + "github.com/99designs/gqlgen/graphql/handler"
  5 + "github.com/99designs/gqlgen/graphql/playground"
  6 + _ "github.com/tiptok/godevp/pkg/infrastructure/pg"
  7 + "github.com/tiptok/godevp/pkg/port/graphql/graph"
  8 + "github.com/tiptok/godevp/pkg/port/graphql/graph/generated"
  9 + "log"
  10 + "net/http"
  11 + "os"
  12 +)
  13 +
  14 +const defaultPort = "8080"
  15 +
  16 +func main() {
  17 + port := os.Getenv("PORT")
  18 + if port == "" {
  19 + port = defaultPort
  20 + }
  21 +
  22 + srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}}))
  23 +
  24 + http.Handle("/", playground.Handler("GraphQL playground", "/query"))
  25 + http.Handle("/query", srv)
  26 +
  27 + log.Printf("connect to http://localhost:%s/ for GraphQL playground", port)
  28 + log.Fatal(http.ListenAndServe(":"+port, nil))
  29 +}
  1 +package auth
  2 +
  3 +import (
  4 + "net/http"
  5 + "net/http/httptest"
  6 + "testing"
  7 +
  8 + "github.com/astaxie/beego"
  9 + . "github.com/onsi/ginkgo"
  10 + . "github.com/onsi/gomega"
  11 + _ "github.com/tiptok/godevp/pkg/infrastructure/pg"
  12 + _ "github.com/tiptok/godevp/pkg/port/beego"
  13 +)
  14 +
  15 +func TestAuth(t *testing.T) {
  16 + RegisterFailHandler(Fail)
  17 + RunSpecs(t, "Beego Port Auth Correlations Test Case Suite")
  18 +}
  19 +
  20 +var handler http.Handler
  21 +var server *httptest.Server
  22 +
  23 +var _ = BeforeSuite(func() {
  24 + handler = beego.BeeApp.Handlers
  25 + server = httptest.NewServer(handler)
  26 +})
  27 +
  28 +var _ = AfterSuite(func() {
  29 + server.Close()
  30 +})
  1 +package auth
  2 +
  3 +import (
  4 + "net/http"
  5 +
  6 + "github.com/gavv/httpexpect"
  7 + "github.com/go-pg/pg/v10"
  8 + . "github.com/onsi/ginkgo"
  9 + . "github.com/onsi/gomega"
  10 + pG "github.com/tiptok/godevp/pkg/infrastructure/pg"
  11 +)
  12 +
  13 +var _ = Describe("登录", func() {
  14 + var Id int64
  15 + BeforeEach(func() {
  16 + _, err := pG.DB.QueryOne(
  17 + pg.Scan(&Id),
  18 + "INSERT INTO s () VALUES () RETURNING id",
  19 + )
  20 + Expect(err).NotTo(HaveOccurred())
  21 + })
  22 + Describe("登录", func() {
  23 + Context("", func() {
  24 + It("", func() {
  25 + httpExpect := httpexpect.New(GinkgoT(), server.URL)
  26 + body := map[string]interface{}{
  27 + "username": "string",
  28 + "password": "string",
  29 + }
  30 + httpExpect.POST("/auth/login").
  31 + WithJSON(body).
  32 + Expect().
  33 + Status(http.StatusOK).
  34 + JSON().
  35 + Object().
  36 + ContainsKey("code").ValueEqual("code", 0).
  37 + ContainsKey("msg").ValueEqual("msg", "ok").
  38 + ContainsKey("data").Value("data").Object()
  39 + })
  40 + })
  41 + })
  42 + AfterEach(func() {
  43 + _, err := pG.DB.Exec("DELETE FROM s WHERE true")
  44 + Expect(err).NotTo(HaveOccurred())
  45 + })
  46 +})
  1 +package auth
  2 +
  3 +import (
  4 + "net/http"
  5 +
  6 + "github.com/gavv/httpexpect"
  7 + "github.com/go-pg/pg/v10"
  8 + . "github.com/onsi/ginkgo"
  9 + . "github.com/onsi/gomega"
  10 + pG "github.com/tiptok/godevp/pkg/infrastructure/pg"
  11 +)
  12 +
  13 +var _ = Describe("获得当前用户数据", func() {
  14 + var Id int64
  15 + BeforeEach(func() {
  16 + _, err := pG.DB.QueryOne(
  17 + pg.Scan(&Id),
  18 + "INSERT INTO s () VALUES () RETURNING id",
  19 + )
  20 + Expect(err).NotTo(HaveOccurred())
  21 + })
  22 + Describe("获得当前用户数据", func() {
  23 + Context("", func() {
  24 + It("", func() {
  25 + httpExpect := httpexpect.New(GinkgoT(), server.URL)
  26 + body := map[string]interface{}{
  27 + "userId": "int64",
  28 + }
  29 + httpExpect.POST("/auth/profile").
  30 + WithJSON(body).
  31 + Expect().
  32 + Status(http.StatusOK).
  33 + JSON().
  34 + Object().
  35 + ContainsKey("code").ValueEqual("code", 0).
  36 + ContainsKey("msg").ValueEqual("msg", "ok").
  37 + ContainsKey("data").Value("data").Object()
  38 + })
  39 + })
  40 + })
  41 + AfterEach(func() {
  42 + _, err := pG.DB.Exec("DELETE FROM s WHERE true")
  43 + Expect(err).NotTo(HaveOccurred())
  44 + })
  45 +})
  1 +package auth
  2 +
  3 +import (
  4 + "net/http"
  5 +
  6 + "github.com/gavv/httpexpect"
  7 + "github.com/go-pg/pg/v10"
  8 + . "github.com/onsi/ginkgo"
  9 + . "github.com/onsi/gomega"
  10 + pG "github.com/tiptok/godevp/pkg/infrastructure/pg"
  11 +)
  12 +
  13 +var _ = Describe("刷新权限", func() {
  14 + var Id int64
  15 + BeforeEach(func() {
  16 + _, err := pG.DB.QueryOne(
  17 + pg.Scan(&Id),
  18 + "INSERT INTO s () VALUES () RETURNING id",
  19 + )
  20 + Expect(err).NotTo(HaveOccurred())
  21 + })
  22 + Describe("刷新权限", func() {
  23 + Context("", func() {
  24 + It("", func() {
  25 + httpExpect := httpexpect.New(GinkgoT(), server.URL)
  26 + body := map[string]interface{}{
  27 + "refreshToken": "string",
  28 + }
  29 + httpExpect.POST("/auth/refresh").
  30 + WithJSON(body).
  31 + Expect().
  32 + Status(http.StatusOK).
  33 + JSON().
  34 + Object().
  35 + ContainsKey("code").ValueEqual("code", 0).
  36 + ContainsKey("msg").ValueEqual("msg", "ok").
  37 + ContainsKey("data").Value("data").Object()
  38 + })
  39 + })
  40 + })
  41 + AfterEach(func() {
  42 + _, err := pG.DB.Exec("DELETE FROM s WHERE true")
  43 + Expect(err).NotTo(HaveOccurred())
  44 + })
  45 +})