Skip to content

Commit

Permalink
fix MultipleObjectsReturned?
Browse files Browse the repository at this point in the history
  • Loading branch information
RuslanUC committed Sep 3, 2024
1 parent 5f70497 commit fe3f000
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 8 deletions.
2 changes: 1 addition & 1 deletion yepcord/rest_api/routes/applications.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ async def create_application(data: CreateApplication, user: User = DepUser):
app = await Application.create(id=app_id, owner=user, name=name)
bot_user = await User.create(id=app_id, email=f"bot_{app_id}", password="", is_bot=True)
await UserData.create(id=app_id, user=bot_user, birth=datetime.now(), username=username, discriminator=disc)
await UserSettings.create(id=app_id, user=user, locale=(await user.settings).locale)
await UserSettings.create(id=app_id, user=bot_user, locale=(await user.settings).locale)
await Bot.create(id=app_id, application=app, user=bot_user)
return await app.ds_json()

Expand Down
4 changes: 2 additions & 2 deletions yepcord/yepcord/models/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ def gen_token_secret() -> str:

class Bot(Model):
id: int = SnowflakeField(pk=True)
application: models.Application = fields.ForeignKeyField("models.Application", null=False, unique=True)
user: User = fields.ForeignKeyField("models.User", null=True, default=None, related_name="bot_user")
application: models.Application = fields.OneToOneField("models.Application")
user: User = fields.OneToOneField("models.User", null=True, default=None, related_name="bot_user")
bot_public: bool = fields.BooleanField(default=True)
bot_require_code_grant: bool = fields.BooleanField(default=True)
token_secret: str = fields.CharField(max_length=128, default=gen_token_secret)
Expand Down
2 changes: 1 addition & 1 deletion yepcord/yepcord/models/frecency_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

class FrecencySettings(Model):
id: int = SnowflakeField(pk=True)
user: models.User = fields.ForeignKeyField("models.User")
user: models.User = fields.OneToOneField("models.User")
settings: str = fields.TextField()

def to_proto(self) -> FrecencyUserSettings:
Expand Down
5 changes: 5 additions & 0 deletions yepcord/yepcord/models/guild_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ class GuildMember(Model):

guildevents: fields.ReverseRelation[models.GuildEvent]

class Meta:
unique_together = (
("user", "guild"),
)

@property
def joined_at(self) -> datetime:
return Snowflake.toDatetime(self.id)
Expand Down
2 changes: 1 addition & 1 deletion yepcord/yepcord/models/guild_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
class GuildTemplate(Model):
id: int = SnowflakeField(pk=True)
name: str = fields.CharField(max_length=64)
guild: models.Guild = fields.ForeignKeyField("models.Guild")
guild: models.Guild = fields.OneToOneField("models.Guild")
description: Optional[str] = fields.CharField(max_length=128, null=True, default=None)
usage_count: int = fields.BigIntField(default=0)
creator: Optional[models.User] = fields.ForeignKeyField("models.User", on_delete=fields.SET_NULL, null=True)
Expand Down
5 changes: 5 additions & 0 deletions yepcord/yepcord/models/readstate.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ class ReadState(Model):
last_read_id: int = fields.BigIntField()
count: int = fields.IntField()

class Meta:
unique_together = (
("channel", "user"),
)

async def ds_json(self) -> dict:
last_pin = await getCore().getLastPinnedMessage(self.channel)
last_pin_ts = last_pin.pinned_timestamp.strftime("%Y-%m-%dT%H:%M:%S+00:00") if last_pin is not None else None
Expand Down
5 changes: 5 additions & 0 deletions yepcord/yepcord/models/thread_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ class ThreadMember(Model):
channel: models.Channel = fields.ForeignKeyField("models.Channel")
guild: models.Guild = fields.ForeignKeyField("models.Guild")

class Meta:
unique_together = (
("user", "channel"),
)

@property
def joined_at(self) -> datetime:
return Snowflake.toDatetime(self.id)
Expand Down
2 changes: 1 addition & 1 deletion yepcord/yepcord/models/thread_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

class ThreadMetadata(Model):
id: int = SnowflakeField(pk=True)
channel: models.Channel = fields.ForeignKeyField("models.Channel")
channel: models.Channel = fields.OneToOneField("models.Channel")
archived: bool = fields.BooleanField(default=False)
locked: bool = fields.BooleanField(default=False)
archive_timestamp: datetime = fields.DatetimeField()
Expand Down
5 changes: 5 additions & 0 deletions yepcord/yepcord/models/user_note.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ class UserNote(Model):
target: models.User = fields.ForeignKeyField("models.User", related_name="target")
text: str = fields.CharField(null=True, default=None, max_length=256)

class Meta:
unique_together = (
("user", "target"),
)

def ds_json(self) -> dict:
return {
"user_id": self.user.id,
Expand Down
2 changes: 1 addition & 1 deletion yepcord/yepcord/models/user_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

class UserSettings(Model):
id: int = SnowflakeField(pk=True)
user: models.User = fields.ForeignKeyField("models.User")
user: models.User = fields.OneToOneField("models.User")
inline_attachment_media: bool = fields.BooleanField(default=True)
show_current_game: bool = fields.BooleanField(default=True)
view_nsfw_guilds: bool = fields.BooleanField(default=False)
Expand Down
2 changes: 1 addition & 1 deletion yepcord/yepcord/models/userdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class Meta:
unique_together = (("username", "discriminator"),)

id: int = SnowflakeField(pk=True)
user: models.User = fields.ForeignKeyField("models.User")
user: models.User = fields.OneToOneField("models.User")
birth: date = fields.DateField()
username: str = fields.CharField(max_length=128)
discriminator: int = fields.IntField(validators=[MinValueValidator(0), MaxValueValidator(9999)])
Expand Down

0 comments on commit fe3f000

Please sign in to comment.