/passflow

ハッカソン「動けばええんや」

Primary LanguageGoMIT LicenseMIT

PassFlow

require

  • docker
  • go 1.21

.env

(local development only)

REDIS_HOST="localhost"
REDIS_ADDR="6379"
REDIS_DB="0"
REDIS_POOL="1000"
REDIS_PWD=""
ECHO_ADDR="1323"

Usage

make up
go run .

Postmanなどを使うと便利です

流れ

  1. /info でユーザー情報を登録
  2. /info/:id でユーザー情報が取得できるか確認
  3. /pos でユーザーの位置情報を登録

再起動した場合Infoが消えるので1,2をやり直さないとダメ(現状永続化してない やります)

API

  • [GET] /ping

    • response

      {
          "message": "PONG"
      }
  • [POST] /info

    • request

      {
          "id": "shiyui",
          "name": "しゆい",
          "like": "Go",
          "dislike": "",
          "From": "Ibaraki"
      }
    • response

      {
          "id": "shiyui",
          "name": "しゆい",
          "like": "Go",
          "dislike": "",
          "From": "Ibaraki"
      }
  • [GET] /info/:id

    • response

          {
              "id": "shiyui",
              "name": "しゆい",
              "like": "Go",
              "dislike": "",
              "from": "Ibaraki",
              "friends": [
                  "kyre",
                  "sayoi"
              ],
              "collection": {
                  "like": {
                      "TypeScript": 2
                  },
                  "dislike": {
                      "C": 1,
                      "Python": 1
                  },
                  "from": {
                      "Ibaraki": 1,
                      "大阪": 1
                  }
              },
              "record": {
                  "2023-08-18": 2
              }
          }
  • [POST] /pos

    Infoに登録されているユーザーのみ、postを受け付けられます。
    Infoは現状永続化されていないので、再起動するたびにInfoを登録しなおさないとだめ
    Redisに保存してるid,lat,lonは再起動しても消えません。(redis-dataみたいなdirectoryが生成されるはず)

    • request

      {
          "id": "shiyui",
          "lat": 1,
          "lng": 1
      }
    • response

      {
          "cnt": 2,
          "users": [
              {
                  "id": "sayoi",
                  "lat": 1.1,
                  "lon": 1.1
              },
              {
                  "id": "kyre",
                  "lat": 1.2,
                  "lon": 1.2
              }
          ]
      }