https://github.com/kajilabteam/openhacku2024_back
https://github.com/kajilabteam/openhacku2024_back
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/kajilabteam/openhacku2024_back
- Owner: kajiLabTeam
- Created: 2024-08-20T07:04:32.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-29T14:21:52.000Z (almost 2 years ago)
- Last Synced: 2024-08-29T16:02:33.881Z (almost 2 years ago)
- Language: Python
- Size: 39.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# openHackU2024_BACKEND
## 概要
[openHackU2024_front](https://github.com/kajiLabTeam/openHackU2024_front)からのリクエストを処理するAPIサーバー。
POSTで送られてきた情報をデータベースへ登録し、ユーザー・グループ・曲データの管理を行う。
## 環境構築
### データベースの構築
MySQLのプロンプト上で"init.sql"を実行する。
mysql> source ./db_init/init.sql;
以下のデータベースとテーブルが自動で作成される。
+---------------------+
| Tables_in_tomato_db |
+---------------------+
| group_tb |
| user_tb |
+---------------------+
### pythonライブラリのインストール
pip install Flask
pip install flask-cors
pip install mysql-connector-python
## 実行方法
"main.py"を実行するとAPIサーバーが立ち上がる
python3 main.py
## 各プログラム
### main.py
#### Flaskを利用したAPIサーバー。
- /api/account/align
- アカウント連携ページ
Spotifyから取得した楽曲データ,表示名,UUIDを受け取り、データベースへ登録する。
- /api/room/access
- グループへの参加確認・グループの作成
合言葉,表示名,UUIDを受け取り、一致する合言葉のグループに所属するユーザーを取得する。
もし、グループが存在しなかった場合、自動的にグループが作成される。
- /api/room/get
- グループへの参加
合言葉,表示名,UUIDを受け取り、一致する合言葉のグループにユーザーを追加する。
- /api/account/align
- グループデータの取得
合言葉,表示名,UUIDを受け取り、一致する合言葉のグループに所属するユーザー,楽曲データを取得する。
### /modules/database.py
#### "main.py"から呼び出されるデータベース操作用プログラム。
- connect_database()
データベースへ接続するための関数
- regist_data(spotify_data:list, display_name:str, user_id:str)
データベースへ楽曲データ,表示名,UUIDを登録する。
- get_member(passphrase:str, display_name:str, user_id:str)
データベースから合言葉のグループに所属するユーザーを取得する。
もし、グループが存在しなかった場合、自動的にグループが作成される。
- join_group(passphrase:str, display_name:str, user_id:str)
ユーザーのグループIDを合言葉のグループに変更する。
- get_group(passphrase:str)
合言葉のグループに所属するユーザー,楽曲データを取得する。
取得したユーザーごとの楽曲データを合計し、被っていた数を算出する。
- get_rawdata(table:str="user_tb", where:str="", sql:str="")
データベースから生データを取得する。
何も引数を渡さなかった場合、"user_tb"のデータを取得する。
`table`に欲しいテーブルデータを指定することで、そのテーブルデータを取得することができる。
`where`に`"name='hoge'"`のような条件を指定することもできる。
`sql`に`"SELECT * FROM user_tb WHERE id=3"`のように直接SQLのクエリ文を指定することもできる。これを使用した場合、`sql`が最優先される。