Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
2cb0bf44
Commit
2cb0bf44
authored
Dec 26, 2023
by
Timothy J. Baek
Browse files
fix: chat return type to dict
parent
6350d86b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
15 deletions
+52
-15
backend/apps/web/models/chats.py
backend/apps/web/models/chats.py
+20
-2
backend/apps/web/models/users.py
backend/apps/web/models/users.py
+0
-3
backend/apps/web/routers/chats.py
backend/apps/web/routers/chats.py
+32
-10
No files found.
backend/apps/web/models/chats.py
View file @
2cb0bf44
...
@@ -44,8 +44,12 @@ class ChatForm(BaseModel):
...
@@ -44,8 +44,12 @@ class ChatForm(BaseModel):
chat
:
dict
chat
:
dict
class
Chat
UpdateForm
(
ChatForm
):
class
Chat
Response
(
BaseModel
):
id
:
str
id
:
str
user_id
:
str
title
:
str
chat
:
dict
timestamp
:
int
# timestamp in epoch
class
ChatTitleIdResponse
(
BaseModel
):
class
ChatTitleIdResponse
(
BaseModel
):
...
@@ -77,7 +81,11 @@ class ChatTable:
...
@@ -77,7 +81,11 @@ class ChatTable:
def
update_chat_by_id
(
self
,
id
:
str
,
chat
:
dict
)
->
Optional
[
ChatModel
]:
def
update_chat_by_id
(
self
,
id
:
str
,
chat
:
dict
)
->
Optional
[
ChatModel
]:
try
:
try
:
query
=
Chat
.
update
(
chat
=
json
.
dumps
(
chat
)).
where
(
Chat
.
id
==
id
)
query
=
Chat
.
update
(
chat
=
json
.
dumps
(
chat
),
title
=
chat
[
"title"
]
if
"title"
in
chat
else
"New Chat"
,
timestamp
=
int
(
time
.
time
()),
).
where
(
Chat
.
id
==
id
)
query
.
execute
()
query
.
execute
()
chat
=
Chat
.
get
(
Chat
.
id
==
id
)
chat
=
Chat
.
get
(
Chat
.
id
==
id
)
...
@@ -92,6 +100,7 @@ class ChatTable:
...
@@ -92,6 +100,7 @@ class ChatTable:
ChatModel
(
**
model_to_dict
(
chat
))
ChatModel
(
**
model_to_dict
(
chat
))
for
chat
in
Chat
.
select
()
for
chat
in
Chat
.
select
()
.
where
(
Chat
.
user_id
==
user_id
)
.
where
(
Chat
.
user_id
==
user_id
)
.
order_by
(
Chat
.
timestamp
.
desc
())
.
limit
(
limit
)
.
limit
(
limit
)
.
offset
(
skip
)
.
offset
(
skip
)
]
]
...
@@ -109,5 +118,14 @@ class ChatTable:
...
@@ -109,5 +118,14 @@ class ChatTable:
for
chat
in
Chat
.
select
().
limit
(
limit
).
offset
(
skip
)
for
chat
in
Chat
.
select
().
limit
(
limit
).
offset
(
skip
)
]
]
def
delete_chat_by_id_and_user_id
(
self
,
id
:
str
,
user_id
:
str
)
->
bool
:
try
:
query
=
Chat
.
delete
().
where
((
Chat
.
id
==
id
)
&
(
Chat
.
user_id
==
user_id
))
query
.
execute
()
# Remove the rows, return number of rows removed.
return
True
except
:
return
False
Chats
=
ChatTable
(
DB
)
Chats
=
ChatTable
(
DB
)
backend/apps/web/models/users.py
View file @
2cb0bf44
...
@@ -27,9 +27,6 @@ class User(Model):
...
@@ -27,9 +27,6 @@ class User(Model):
class
UserModel
(
BaseModel
):
class
UserModel
(
BaseModel
):
class
Config
:
orm_mode
=
True
id
:
str
id
:
str
name
:
str
name
:
str
email
:
str
email
:
str
...
...
backend/apps/web/routers/chats.py
View file @
2cb0bf44
...
@@ -5,12 +5,13 @@ from typing import List, Union, Optional
...
@@ -5,12 +5,13 @@ from typing import List, Union, Optional
from
fastapi
import
APIRouter
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
from
pydantic
import
BaseModel
import
json
from
apps.web.models.users
import
Users
from
apps.web.models.users
import
Users
from
apps.web.models.chats
import
(
from
apps.web.models.chats
import
(
ChatModel
,
ChatModel
,
ChatResponse
,
ChatForm
,
ChatForm
,
ChatUpdateForm
,
ChatTitleIdResponse
,
ChatTitleIdResponse
,
Chats
,
Chats
,
)
)
...
@@ -46,13 +47,14 @@ async def get_user_chats(skip: int = 0, limit: int = 50, cred=Depends(bearer_sch
...
@@ -46,13 +47,14 @@ async def get_user_chats(skip: int = 0, limit: int = 50, cred=Depends(bearer_sch
############################
############################
@
router
.
post
(
"/new"
,
response_model
=
Optional
[
Chat
Model
])
@
router
.
post
(
"/new"
,
response_model
=
Optional
[
Chat
Response
])
async
def
create_new_chat
(
form_data
:
ChatForm
,
cred
=
Depends
(
bearer_scheme
)):
async
def
create_new_chat
(
form_data
:
ChatForm
,
cred
=
Depends
(
bearer_scheme
)):
token
=
cred
.
credentials
token
=
cred
.
credentials
user
=
Users
.
get_user_by_token
(
token
)
user
=
Users
.
get_user_by_token
(
token
)
if
user
:
if
user
:
return
Chats
.
insert_new_chat
(
user
.
id
,
form_data
)
chat
=
Chats
.
insert_new_chat
(
user
.
id
,
form_data
)
return
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
else
:
else
:
raise
HTTPException
(
raise
HTTPException
(
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
...
@@ -65,13 +67,14 @@ async def create_new_chat(form_data: ChatForm, cred=Depends(bearer_scheme)):
...
@@ -65,13 +67,14 @@ async def create_new_chat(form_data: ChatForm, cred=Depends(bearer_scheme)):
############################
############################
@
router
.
get
(
"/{id}"
,
response_model
=
Optional
[
Chat
Model
])
@
router
.
get
(
"/{id}"
,
response_model
=
Optional
[
Chat
Response
])
async
def
get_chat_by_id
(
id
:
str
,
cred
=
Depends
(
bearer_scheme
)):
async
def
get_chat_by_id
(
id
:
str
,
cred
=
Depends
(
bearer_scheme
)):
token
=
cred
.
credentials
token
=
cred
.
credentials
user
=
Users
.
get_user_by_token
(
token
)
user
=
Users
.
get_user_by_token
(
token
)
if
user
:
if
user
:
return
Chats
.
get_chat_by_id_and_user_id
(
id
,
user
.
id
)
chat
=
Chats
.
get_chat_by_id_and_user_id
(
id
,
user
.
id
)
return
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
else
:
else
:
raise
HTTPException
(
raise
HTTPException
(
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
...
@@ -84,17 +87,16 @@ async def get_chat_by_id(id: str, cred=Depends(bearer_scheme)):
...
@@ -84,17 +87,16 @@ async def get_chat_by_id(id: str, cred=Depends(bearer_scheme)):
############################
############################
@
router
.
post
(
"/{id}"
,
response_model
=
Optional
[
ChatModel
])
@
router
.
post
(
"/{id}"
,
response_model
=
Optional
[
ChatResponse
])
async
def
update_chat_by_id
(
async
def
update_chat_by_id
(
id
:
str
,
form_data
:
ChatForm
,
cred
=
Depends
(
bearer_scheme
)):
id
:
str
,
form_data
:
ChatUpdateForm
,
cred
=
Depends
(
bearer_scheme
)
):
token
=
cred
.
credentials
token
=
cred
.
credentials
user
=
Users
.
get_user_by_token
(
token
)
user
=
Users
.
get_user_by_token
(
token
)
if
user
:
if
user
:
chat
=
Chats
.
get_chat_by_id_and_user_id
(
id
,
user
.
id
)
chat
=
Chats
.
get_chat_by_id_and_user_id
(
id
,
user
.
id
)
if
chat
:
if
chat
:
return
Chats
.
update_chat_by_id
(
id
,
form_data
.
chat
)
chat
=
Chats
.
update_chat_by_id
(
id
,
form_data
.
chat
)
return
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
else
:
else
:
raise
HTTPException
(
raise
HTTPException
(
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
...
@@ -105,3 +107,23 @@ async def update_chat_by_id(
...
@@ -105,3 +107,23 @@ async def update_chat_by_id(
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
detail
=
ERROR_MESSAGES
.
INVALID_TOKEN
,
detail
=
ERROR_MESSAGES
.
INVALID_TOKEN
,
)
)
############################
# DeleteChatById
############################
@
router
.
delete
(
"/{id}"
,
response_model
=
bool
)
async
def
delete_chat_by_id
(
id
:
str
,
cred
=
Depends
(
bearer_scheme
)):
token
=
cred
.
credentials
user
=
Users
.
get_user_by_token
(
token
)
if
user
:
result
=
Chats
.
delete_chat_by_id_and_user_id
(
id
,
user
.
id
)
return
result
else
:
raise
HTTPException
(
status_code
=
status
.
HTTP_401_UNAUTHORIZED
,
detail
=
ERROR_MESSAGES
.
INVALID_TOKEN
,
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment