moonstream-to / api

Building blocks for your blockchain economy
https://moonstream.to
Apache License 2.0
135 stars 49 forks source link

Add materialized view. #1077

Open Andrei-Dolgolev opened 1 month ago

Andrei-Dolgolev commented 1 month ago

Tested.

Queries for testing.

### get info
GET http://127.0.0.1:7191/leaderboard/info?leaderboard_id=<leaderboard_id>

### get leaderboard scores
GET http://127.0.0.1:7191/leaderboard/?leaderboard_id=<leaderboard_id>

### quartiles
GET http://127.0.0.1:7191/leaderboard/quartiles?leaderboard_id=<leaderboard_id>&version=5

### position
GET http://127.0.0.1:7191/leaderboard/position?leaderboard_id=<leaderboard_id>&address=0x0000000000000000000000000000000000000000&window_size=2&normalize_addresses=True

### scores

GET http://127.0.0.1:7191/leaderboard/scores?leaderboard_id=<leaderboard_id>&address=0x609F10EF05e5b068382d1a6D68409b437160d064

### get count

GET http://127.0.0.1:7191/leaderboard/count/addresses?leaderboard_id=<leaderboard_id>

### Push scores (that make this steps 1 create new version 2 push scores there 3 maket version puclic 4 delete all another versions) (mv updated)
PUT http://127.0.0.1:7191/leaderboard/<leaderboard_id>/scores?overwrite=true
Authorization: Bearer <token_id>
Content-Type: application/json

[{
  "address": "0x0000000000000000000000000000000000000000",
  "score": 2000000,
  "points_data": {
    "breeding": 100000000,
    "hatchingEggs": 100000000
  }
}]

### get existed versions

GET http://127.0.0.1:7191/leaderboard/<leaderboard_id>/versions
Authorization: Bearer <token_id>
Content-Type: application/json

### create not public version (mv not updated)

POST http://127.0.0.1:7191/leaderboard/<leaderboard_id>/versions
Authorization: Bearer <token_id>
Content-Type: application/json

{
  "publish": false
}

###  publish version (mv updated)

PUT http://127.0.0.1:7191/leaderboard/<leaderboard_id>/versions/9
Authorization: Bearer <token_id>
Content-Type: application/json

{
  "publish": true
}

###

### update scores with version (mv updated but if it not latest public not change anything)

PUT http://127.0.0.1:7191/leaderboard/<leaderboard_id>/versions/9/scores?normalize_addresses=false&overwrite=false
Authorization: Bearer <token_id>
Content-Type: application/json

[{
  "address": "0x000000000000000000000000000000000000000q",
  "score": 2000000,
  "points_data": {
    "breeding": 100000000,
    "hatchingEggs": 100000000
  }
},
{
  "address": "0x000000000000000000000000000000000000000",
  "score": 2000000,
  "points_data": {
    "breeding": 100000000,
    "hatchingEggs": 100000000
  }
}
]

### delete version (mv updated)

DELETE  http://127.0.0.1:7191/leaderboard/<leaderboard_id>/versions/10
Authorization: Bearer <token_id>