deta.spaceである程度のサイズのものを作ってみる

deta.space - Driveやdatabaseを一通り使うサイトを作る(設計編)

一度,deta.shで完成しましたが、直後にdeta.spaceへと移管となり、動かなくなっていましたので、deta.spaceでやり直しました

本当に作ってみたらどうかなるか掘ってみた

設計の全体像

管理人無しで自主管理できる写真配布サイト
会員登録は必要だが、メールチェックまでは行わない
会員はだれでも写真をまとめるイベントを作成できる(例:山田中学校 秋の大運動会)
イベントを作った人が主催者となる
イベントは全体で10個まで作成できる
1イベントに10枚の写真が登録できる(実際やってみると5,6枚が限界、タイムアウトする)
イベントは最長10日間公開できる(途中で消す方法は公開しない)
他人が作成したイベントの名前の一覧を見ることができる
他人が作成したイベントに参加希望を出せる
参加希望されたイベントの主催者が参加の許可、拒否を決めることができる
参加すると写真の参照、ダウンロード(右クリック)、登録ができる
自分で登録した写真は、削除することができる
期限が過ぎたイベントとその写真は自動で削除される(誰かのLOGOUTのタイミング)
管理人用のプログラムは作成しない(省略します)
このプログラムは事前連絡なく削除される可能性があります
良俗に違反する写真は私が勝手に削除します
サンプルです。本気で使わないでください

deta.space特有の注意点

データベースがNoSQLなので、リレーションが作れない(第3正規形を中途半端にする、リストデータを持つ)
/tmpフォルダーしか使えないので写真などのjpgファイルはDriveというファイル管理に保管する。urlがない
urlがないので <image src=で指定できない。そのためDriveから画像をbase64に変換して4096byteづつpythonで受信し
<image src="data:image/jpeg;base64,---"で表示する
Driveに保存して、そのファイル名がどのイベントに入っているかのデータベースを作って管理する
処理が非常に遅い。時々サーバーエラーが発生する
1リクエストに対して10秒のタイムアウトがあるので、大きな画像の転送はできない
画像を使うシステムとしては実用がむずかしい

作るべきクラス

product keyの管理 - base						
ユーザー登録用のクラス - user
イベント管理用のクラス - event
イベントの写真をデータベース管理するクラス - photoBase
イベント参加依頼のクラス - paticip
ファイルを管理するクラス - driveFile

作るべき画面

ログイン - login 
サインアップ済 - signup
ヘルプ - help
イベント、許可一覧 - index
イベント写真(削除)一覧 - photos
写真追加 - photoadd
イベント作成、修正 - event
イベント参加要請 - request
イベント参加許可 - patic

作るべきデータベース

users - key,id(login),password(hash data)
events - key,comment,email,eventname,firstDay(作成日),id(作成者),limitdate,paticip(許可者list)
photos - key,comments,datetime(撮影日),eventID,filename,fromid(投稿者)
paticip - key,eventid,eventname,userid(依頼者),rmemo(依頼メモ)