backend: initial
This commit is contained in:
parent
e5932844e2
commit
b62f6d87c7
33 changed files with 59 additions and 15 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,5 @@
|
|||
.venv/
|
||||
venv/
|
||||
__pycache__/
|
||||
.idea/
|
||||
.DS_Store
|
32
backend/main.py
Normal file
32
backend/main.py
Normal file
|
@ -0,0 +1,32 @@
|
|||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from vntypes import Novel
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
origins = [
|
||||
"http://localhost",
|
||||
"http://localhost:5173",
|
||||
]
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=origins,
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
@app.get("/")
|
||||
def read_root():
|
||||
return {"Hello": "World"}
|
||||
|
||||
@app.get("/posts/{uuid}")
|
||||
def get_post(uuid: str):
|
||||
return uuid
|
||||
|
||||
@app.post("/new")
|
||||
def new_post(novel: Novel):
|
||||
print(novel)
|
||||
return "yay!"
|
|
@ -1,17 +1,20 @@
|
|||
|
||||
from pydantic import BaseModel
|
||||
from datetime import datetime
|
||||
|
||||
class Novel:
|
||||
class Novel(BaseModel):
|
||||
title: str
|
||||
description: str
|
||||
|
||||
vndb: int
|
||||
vndb: int | None = None
|
||||
hours_to_read: int
|
||||
|
||||
tags: list[str]
|
||||
genres: list[str]
|
||||
badges: list[str]
|
||||
|
||||
tg_post: str #url::Url
|
||||
post_at: datetime
|
||||
tg_post: str | None = None #url::Url
|
||||
post_at: datetime | None = None
|
||||
|
||||
class FullNovel:
|
||||
data: Novel
|
0
vnshed/.gitignore → frontend/.gitignore
vendored
0
vnshed/.gitignore → frontend/.gitignore
vendored
0
vnshed/src/app.d.ts → frontend/src/app.d.ts
vendored
0
vnshed/src/app.d.ts → frontend/src/app.d.ts
vendored
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
@ -11,15 +11,21 @@
|
|||
let page_data = $state({
|
||||
title: "",
|
||||
description: "",
|
||||
time_to_read: "",
|
||||
hours_to_read: 0,
|
||||
genres: [],
|
||||
tags: [],
|
||||
badges: [],
|
||||
pub_date: ""
|
||||
badges: []
|
||||
})
|
||||
|
||||
function send_json() {
|
||||
console.log(JSON.stringify(page_data))
|
||||
fetch('http://127.0.0.1:8000/new', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin': "<origin>"
|
||||
},
|
||||
body: JSON.stringify(page_data)
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -43,11 +49,11 @@
|
|||
<!-- Время на чтение -->
|
||||
<div class="horisontal-bar">
|
||||
<p>Время на чтение</p>
|
||||
<select class="input rounded" id="hours-count" bind:value={page_data["time_to_read"]}>
|
||||
<option value="first">менее 2-х часов</option>
|
||||
<option value="second">2-10 часов</option>
|
||||
<option value="third">10-30 часов</option>
|
||||
<option value="third">50+ часов</option>
|
||||
<select class="input rounded" id="hours-count" bind:value={page_data["hours_to_read"]}>
|
||||
<option value="2">менее 2-х часов</option>
|
||||
<option value="10">2-10 часов</option>
|
||||
<option value="30">10-30 часов</option>
|
||||
<option value="50">50+ часов</option>
|
||||
</select>
|
||||
</div>
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"title": "Higurashi no Naku Koro ni. Console-exclusive Arcs (Когда плачут цикады. Эксклюзивные главы)",
|
||||
"description": "Эксклюзивные главы для консольных версий \"Higurashi no Naku Koro ni\". Главы рекомендуется читать после ознакомления с оригинальными главами.\n\nUPD: На данный момент переведены: Taraimawashi, Tsukiotoshi, Hajisarashi, Miotsukushi и Материалы полиции\n\nОписание глав:\n\nTaraimawashi - Альтернативная первая глава, на первый взгляд — это дополнение к арке \"Вопросов\", пересказ Onikakushi-hen. Тем не менее, эта глава на самом деле содержит события Watanagashi-hen.\nУзнав секреты Хинамидзавы, Кейти решает игнорировать всё и наслаждаться мирной школьной жизнью.\nTsukiotoshi - Оригинальная консольная глава, которая является развилкой для третьей главы \"Tatarigoroshi\".\nДядя Сатоко приезжает в Хинамидзаву, и Кейти решает найти союзников, чтобы помочь Сатоко. Возможно, \"худший\" из миров, где на кубиках выпали одни \"единицы.\"\nHajisarashi - одним жарким днём Рика и её друзья идут в бассейн.\nMiotsukushi - альтернативная концовка всей оригинальной серии.\nМатериалы полиции - краткие истории по длине равных TIPS, которые немного раскрывают Оиши и Акасаку..[/i]",
|
||||
"time_to_read": 4,
|
||||
"hours_to_read": 50,
|
||||
"genres": [ "Драма", "Хоррор", "Детектив", "Мистика", "Повседневность" ],
|
||||
"tags": [ "Иностранный разработчик", "Несколько главных героев" ],
|
||||
"badges": [ "Лучшее" ],
|
||||
"pub_date": "2024-04-13T08:30:00Z"
|
||||
"post_at": "2024-04-13T08:30:00Z"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue