feat: channel socket integration

This commit is contained in:
Timothy Jaeryang Baek
2024-12-22 19:40:01 -07:00
parent eaecd15e69
commit f1d21fc59a
13 changed files with 509 additions and 31 deletions

View File

@@ -4,8 +4,7 @@ import uuid
from typing import Optional
from open_webui.internal.db import Base, get_db
from open_webui.models.tags import TagModel, Tag, Tags
from open_webui.utils.access_control import has_access
from pydantic import BaseModel, ConfigDict
from sqlalchemy import BigInteger, Boolean, Column, String, Text, JSON
@@ -85,6 +84,17 @@ class ChannelTable:
channels = db.query(Channel).all()
return [ChannelModel.model_validate(channel) for channel in channels]
def get_channels_by_user_id(
self, user_id: str, permission: str = "read"
) -> list[ChannelModel]:
channels = self.get_channels()
return [
channel
for channel in channels
if channel.user_id == user_id
or has_access(user_id, permission, channel.access_control)
]
def get_channel_by_id(self, id: str) -> Optional[ChannelModel]:
with get_db() as db:
channel = db.query(Channel).filter(Channel.id == id).first()

View File

@@ -95,7 +95,7 @@ class MessageTable:
all_messages = (
db.query(Message)
.filter_by(channel_id=channel_id)
.order_by(Message.updated_at.desc())
.order_by(Message.updated_at.asc())
.limit(limit)
.offset(skip)
.all()
@@ -109,7 +109,7 @@ class MessageTable:
all_messages = (
db.query(Message)
.filter_by(user_id=user_id)
.order_by(Message.updated_at.desc())
.order_by(Message.updated_at.asc())
.limit(limit)
.offset(skip)
.all()