Files
chore/db/default.py
Ryan Kegel 3b3d14e454 added defaults for now.
reworked tasks and pending rewards
2025-12-15 15:08:27 -05:00

161 lines
7.2 KiB
Python

# python
# File: db/debug.py
from tinydb import Query
from api.image_api import IMAGE_TYPE_ICON, IMAGE_TYPE_PROFILE
from db.db import task_db, reward_db, image_db
from models.image import Image
from models.reward import Reward
from models.task import Task
def populate_default_data():
# Create tasks
task_defs = [
('default_001', "Be Respectful", 2, True, ''),
('default_002', "Brush Teeth", 2, True, ''),
('default_003', "Go To Bed", 2, True, ''),
('default_004', "Do What You Are Told", 2, True, ''),
('default_005', "Make Your Bed", 2, True, ''),
('default_006', "Do Homework", 2, True, ''),
]
tasks = []
for _id, name, points, is_good, image in task_defs:
t = Task(name=name, points=points, is_good=is_good, image_id=image, id=_id)
tq = Query()
_result = task_db.search(tq.id == _id)
if not _result:
task_db.insert(t.to_dict())
else:
task_db.update(t.to_dict(), tq.id == _id)
tasks.append(t.to_dict())
# Create 4 rewards
reward_defs = [
('default_001', "Special Trip", "Go to a park or a museum", 3,''),
('default_002', "Money", "Money is always nice", 8, ''),
('default_003', "Choose Dinner", "What shall we eat?", 12, 'meal'),
('default_004', "Tablet Time", "Play your games", 5, 'tablet'),
('default_005', "Computer Time", "Minecraft or Roblox?", 5, 'computer-game'),
('default_006', "TV Time", "Too much is bad for you.", 5, ''),
]
rewards = []
for _id, name, desc, cost, image in reward_defs:
r = Reward(name=name, description=desc, cost=cost, image_id=image, id=_id)
rq = Query()
_result = reward_db.search(rq.id == _id)
if not _result:
reward_db.insert(r.to_dict())
else:
reward_db.update(r.to_dict(), rq.id == _id)
rewards.append(r.to_dict())
image_defs = [
('computer-game', IMAGE_TYPE_ICON, '.png', True),
('ice-cream', IMAGE_TYPE_ICON, '.png', True),
('meal', IMAGE_TYPE_ICON, '.png', True),
('playground', IMAGE_TYPE_ICON, '.png', True),
('tablet', IMAGE_TYPE_ICON, '.png', True),
('boy01', IMAGE_TYPE_PROFILE, '.png', True),
('girl01', IMAGE_TYPE_PROFILE, '.png', True),
('girl02', IMAGE_TYPE_PROFILE, '.png', True),
('boy02', IMAGE_TYPE_PROFILE, '.png', True),
('boy03', IMAGE_TYPE_PROFILE, '.png', True),
('girl03', IMAGE_TYPE_PROFILE, '.png', True),
('boy04', IMAGE_TYPE_PROFILE, '.png', True),
('girl04', IMAGE_TYPE_PROFILE, '.png', True),
]
images = []
for _id, _type, ext, perm in image_defs:
iq = Query()
_result = image_db.search(iq.id == _id)
if not _result:
image_db.insert(Image(_type, ext, perm, id=_id).to_dict())
else:
image_db.update(Image(_type, ext, perm, id=_id).to_dict(), iq.id == _id)
images.append(Image(_type, ext, perm, id=_id).to_dict())
return {
"images": images,
"tasks": tasks,
"rewards": rewards
}
def createDefaultTasks():
"""Create default tasks if none exist."""
if len(task_db.all()) == 0:
default_tasks = [
Task(name="Take out trash", points=2, is_good=True, image_id="trash-can"),
Task(name="Make your bed", points=2, is_good=True, image_id="make-the-bed"),
Task(name="Sweep and clean kitchen", points=2, is_good=True, image_id="vacuum"),
Task(name="Do homework early", points=2, is_good=True, image_id="homework"),
Task(name="Be good for the day", points=2, is_good=True, image_id="good"),
Task(name="Clean your mess", points=2, is_good=True, image_id="broom"),
Task(name="Fighting", points=2, is_good=False, image_id="fighting"),
Task(name="Yelling at parents", points=2, is_good=False, image_id="yelling"),
Task(name="Lying", points=2, is_good=False, image_id="lying"),
Task(name="Not doing what told", points=2, is_good=False, image_id="ignore"),
Task(name="Not flushing toilet", points=2, is_good=False, image_id="toilet"),
]
for task in default_tasks:
task_db.insert(task.to_dict())
def createDefaultRewards():
"""Create default rewards if none exist."""
if len(reward_db.all()) == 0:
default_rewards = [
Reward(name="Choose meal", description="Choose dinner or lunch", cost=3, image_id="meal"),
Reward(name="$1", description="Money is always nice", cost=8, image_id='money'),
Reward(name="$5", description="Even more money", cost=12, image_id='money'),
Reward(name="Tablet 1 hour", description="Play your games", cost=5, image_id='tablet'),
Reward(name="Computer with dad", description="Let's play a game together", cost=5, image_id='games-with-dad'),
Reward(name="Computer 1 hour", description="Minecraft or Terraria?", cost=5, image_id='computer-game'),
Reward(name="TV 1 hour", description="Too much is bad for you.", cost=5, image_id='tv'),
Reward(name="Candy from store", description="Yum!", cost=5, image_id='candy'),
]
for reward in default_rewards:
reward_db.insert(reward.to_dict())
def initializeImages():
"""Initialize the image database with default images if empty."""
if len(image_db.all()) == 0:
image_defs = [
('boy01', IMAGE_TYPE_PROFILE, '.png', True),
('boy02', IMAGE_TYPE_PROFILE, '.png', True),
('boy03', IMAGE_TYPE_PROFILE, '.png', True),
('boy04', IMAGE_TYPE_PROFILE, '.png', True),
('broom', IMAGE_TYPE_ICON, '.png', True),
('candy', IMAGE_TYPE_ICON, '.png', True),
('computer-game', IMAGE_TYPE_ICON, '.png', True),
('fighting', IMAGE_TYPE_ICON, '.png', True),
('games-with-dad', IMAGE_TYPE_ICON, '.png', True),
('girl01', IMAGE_TYPE_PROFILE, '.png', True),
('girl02', IMAGE_TYPE_PROFILE, '.png', True),
('girl03', IMAGE_TYPE_PROFILE, '.png', True),
('girl04', IMAGE_TYPE_PROFILE, '.png', True),
('good', IMAGE_TYPE_ICON, '.png', True),
('homework', IMAGE_TYPE_ICON, '.png', True),
('ice-cream', IMAGE_TYPE_ICON, '.png', True),
('ignore', IMAGE_TYPE_ICON, '.png', True),
('lying', IMAGE_TYPE_ICON, '.png', True),
('make-the-bed', IMAGE_TYPE_ICON, '.png', True),
('meal', IMAGE_TYPE_ICON, '.png', True),
('money', IMAGE_TYPE_ICON, '.png', True),
('playground', IMAGE_TYPE_ICON, '.png', True),
('tablet', IMAGE_TYPE_ICON, '.png', True),
('toilet', IMAGE_TYPE_ICON, '.png', True),
('trash-can', IMAGE_TYPE_ICON, '.png', True),
('tv', IMAGE_TYPE_ICON, '.png', True),
('vacuum', IMAGE_TYPE_ICON, '.png', True),
('yelling', IMAGE_TYPE_ICON, '.png', True),
]
for _id, _type, ext, perm in image_defs:
img = Image(type=_type, extension=ext, permanent=perm)
img.id = _id
image_db.insert(img.to_dict())
if __name__ == "__main__":
result = populate_default_data()