他に何をすべきかわからない種類のリクエストの例を挙げると、
アプリケーションは、ボウリングのスコア/統計トラッカーです。誰かが高度なモードでスコアを入力すると、スコアだけでなく、いくつかの統計が計算されます。データは次のようにモデル化されます。
ゲーム - 名前、ユーザー、ボウリング場への参照、スコアなどのメンバー フレーム - 各ボールのピンフォール、各ボールでピンが倒されたブーリアン リスト、ボールのパスに関する情報 (スタンス、ターゲット、実際にボールが飛んだ場所) )、そのフレームのスコアなど GameStats - ゲーム全体の計算された統計を保存し、必要に応じて他のゲーム統計とマージして、ゲームのグループ全体の統計を表示します。
実際のこの情報の例は、ここにあります。
ゲームが完了し、フレームが更新されると、ゲーム、フレーム、その後のすべてのフレーム、場合によってはその前のいくつかのフレーム (スコアが正しいことを確認するため)、および統計を更新する必要があります。この操作は、常に CPU モニターにフラグを立てます。ゲームが未完成で、統計を計算する必要がない場合でも、スコアなどを更新してリアルタイムの進行状況をユーザーに表示する必要があるため、これらにもフラグが付けられます。このハンドラーの平均 CPU 時間は 7000 ミリサイクルを超え、ビューも表示されません。ほとんどの人は、シリーズごとに 3 ~ 4 ゲームをボウリングします。レーンでリアルタイムにスコアを入力する場合、2 ~ 4 分ごとに約 1 件のリクエストですが、すべてを書き留めて後で入力すると、30 ~ 40 件のゲームがあります。これらの要求が連続して行われています。
要求に応じて、重要なクラスのデータ モデル:
class Stats(db.Model):
version = db.IntegerProperty(default=1)
first_balls=db.IntegerProperty(default=0)
pocket_tracked=db.IntegerProperty(default=0)
pocket=db.IntegerProperty(default=0)
strike=db.IntegerProperty(default=0)
carry=db.IntegerProperty(default=0)
double=db.IntegerProperty(default=0)
double_tries=db.IntegerProperty(default=0)
target_hit=db.IntegerProperty(default=0)
target_missed_left=db.IntegerProperty(default=0)
target_missed_right=db.IntegerProperty(default=0)
target_missed=db.FloatProperty(default=0.0)
first_count=db.IntegerProperty(default=0)
first_count_miss=db.IntegerProperty(default=0)
second_balls=db.IntegerProperty(default=0)
spare=db.IntegerProperty(default=0)
single=db.IntegerProperty(default=0)
single_made=db.IntegerProperty(default=0)
multi=db.IntegerProperty(default=0)
multi_made=db.IntegerProperty(default=0)
split=db.IntegerProperty(default=0)
split_made=db.IntegerProperty(default=0)
class Game(db.Model):
version = db.IntegerProperty(default=3)
user = db.UserProperty(required=True)
series = db.ReferenceProperty(Series)
score = db.IntegerProperty()
game_number = db.IntegerProperty()
pair = db.StringProperty()
notes = db.TextProperty()
simple_entry_mode = db.BooleanProperty(default=False)
stats = db.ReferenceProperty(Stats)
complete = db.BooleanProperty(default=False)
class Frame(db.Model):
version = db.IntegerProperty(default=1)
user = db.UserProperty()
game = db.ReferenceProperty(Game, required=True)
frame_number = db.IntegerProperty(required=True)
first_count = db.IntegerProperty(required=True)
second_count = db.IntegerProperty()
total_count = db.IntegerProperty()
score = db.IntegerProperty()
ball = db.ReferenceProperty(Ball)
stance = db.FloatProperty()
target = db.FloatProperty()
actual = db.FloatProperty()
slide = db.FloatProperty()
breakpoint = db.FloatProperty()
pocket = db.BooleanProperty()
pocket_type = db.StringProperty()
notes = db.TextProperty()
first_pinfall = db.ListProperty(bool)
second_pinfall = db.ListProperty(bool)
split = db.BooleanProperty(default=False)