Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
9069f751c3
|
|||
|
472956c76d
|
|||
|
27c275bccb
|
|||
|
f89a031997
|
|||
| 8033b498f9 | |||
| 129a1ea5f7 | |||
| c5dc537844 | |||
| 2062083f80 | |||
|
55b4089e43
|
|||
|
5355159e49
|
|||
|
a34d63aebe
|
|||
|
039d206ba0
|
@@ -1 +1,2 @@
|
|||||||
**/*.csv filter=lfs diff=lfs merge=lfs -text
|
**/*.csv filter=lfs diff=lfs merge=lfs -text
|
||||||
|
**/*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ jobs:
|
|||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v7
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v6
|
uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
@@ -20,15 +20,7 @@ jobs:
|
|||||||
pytest:
|
pytest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v7
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: '3.12'
|
|
||||||
- name: Update docker-compose
|
|
||||||
uses: KengoTODA/actions-setup-docker-compose@v1
|
|
||||||
with:
|
|
||||||
version: "2.28.0"
|
|
||||||
- name: run tests
|
- name: run tests
|
||||||
run: docker compose run --build --rm api pytest -vv
|
run: docker compose run --build --rm api pytest -vv
|
||||||
- name: show logs
|
- name: show logs
|
||||||
|
|||||||
+4
-3
@@ -49,13 +49,14 @@ services:
|
|||||||
migrator:
|
migrator:
|
||||||
<<: *main_app
|
<<: *main_app
|
||||||
restart: "no"
|
restart: "no"
|
||||||
command: piccolo migrations forwards all
|
command:
|
||||||
|
- bash
|
||||||
|
- -c
|
||||||
|
- "ls && piccolo migrations forwards all"
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
zangramru-db-data:
|
zangramru-db-data:
|
||||||
name: zangramru-db-data
|
name: zangramru-db-data
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
from piccolo.apps.migrations.auto.migration_manager import MigrationManager
|
||||||
|
from piccolo.columns.column_types import Integer
|
||||||
|
|
||||||
|
ID = "2026-07-02T12:57:47:552419"
|
||||||
|
VERSION = "1.34.0"
|
||||||
|
DESCRIPTION = ""
|
||||||
|
|
||||||
|
|
||||||
|
async def forwards():
|
||||||
|
manager = MigrationManager(
|
||||||
|
migration_id=ID, app_name="zangramru_db", description=DESCRIPTION
|
||||||
|
)
|
||||||
|
|
||||||
|
manager.alter_column(
|
||||||
|
table_class_name="Puzzle",
|
||||||
|
tablename="puzzle",
|
||||||
|
column_name="number",
|
||||||
|
db_column_name="number",
|
||||||
|
params={"unique": True},
|
||||||
|
old_params={"unique": False},
|
||||||
|
column_class=Integer,
|
||||||
|
old_column_class=Integer,
|
||||||
|
schema=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
return manager
|
||||||
@@ -12,4 +12,4 @@ class Puzzle(Table):
|
|||||||
solutions = JSON()
|
solutions = JSON()
|
||||||
extra = JSON()
|
extra = JSON()
|
||||||
definitions = JSON()
|
definitions = JSON()
|
||||||
number = Integer()
|
number = Integer(unique=True)
|
||||||
|
|||||||
+14363
-17236
File diff suppressed because it is too large
Load Diff
@@ -239,6 +239,7 @@ class PuzzleGenerator:
|
|||||||
prev = path[0]
|
prev = path[0]
|
||||||
for tile in path[1:]:
|
for tile in path[1:]:
|
||||||
neigbours[prev].add(tile)
|
neigbours[prev].add(tile)
|
||||||
|
neigbours[tile].add(prev)
|
||||||
prev = tile
|
prev = tile
|
||||||
|
|
||||||
extras = {w: p for w, p in solutions.items() if w not in cover}
|
extras = {w: p for w, p in solutions.items() if w not in cover}
|
||||||
|
|||||||
+784
-306
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
@@ -1,3 +1,4 @@
|
|||||||
|
import asyncio
|
||||||
import json
|
import json
|
||||||
from datetime import date, timedelta
|
from datetime import date, timedelta
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ async def daily_puzzle(
|
|||||||
# Because they start at one, so we need to subtract one.
|
# Because they start at one, so we need to subtract one.
|
||||||
target_date = date.today()
|
target_date = date.today()
|
||||||
if number is not None:
|
if number is not None:
|
||||||
target_date = settings.start_date + timedelta(days=number - 1)
|
target_date = settings.start_date + timedelta(days=number)
|
||||||
|
|
||||||
if target_date > date.today():
|
if target_date > date.today():
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
@@ -45,13 +46,15 @@ async def daily_puzzle(
|
|||||||
if daily_puzzle is not None:
|
if daily_puzzle is not None:
|
||||||
board = [list(daily_puzzle.board[i * 4 : i * 4 + 4]) for i in range(4)]
|
board = [list(daily_puzzle.board[i * 4 : i * 4 + 4]) for i in range(4)]
|
||||||
return DailyPuzzleDTO(
|
return DailyPuzzleDTO(
|
||||||
number=(date.today() - settings.start_date).days,
|
number=daily_puzzle.number,
|
||||||
board=board,
|
board=board,
|
||||||
solutions=json.loads(daily_puzzle.solutions),
|
solutions=json.loads(daily_puzzle.solutions),
|
||||||
extra=json.loads(daily_puzzle.extra),
|
extra=json.loads(daily_puzzle.extra),
|
||||||
word_defs=json.loads(daily_puzzle.definitions),
|
word_defs=json.loads(daily_puzzle.definitions),
|
||||||
)
|
)
|
||||||
puzzle = generator.generate(target=10)
|
|
||||||
|
loop = asyncio.get_running_loop()
|
||||||
|
puzzle = await loop.run_in_executor(None, generator.generate, 10)
|
||||||
compressedboard = "".join("".join(row) for row in puzzle.board)
|
compressedboard = "".join("".join(row) for row in puzzle.board)
|
||||||
await Puzzle(
|
await Puzzle(
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user