Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions tests/_utils/setup.sql
Original file line number Diff line number Diff line change
Expand Up @@ -514,4 +514,40 @@ CREATE TABLE `generic_relations_regress_organization_contact` (
UNIQUE KEY (`organization_id`, `contact_id`),
KEY (`organization_id`),
KEY (`contact_id`)

-- fixtures
CREATE TABLE `fixtures_blog_article` (
`blog_id` BIGINT NOT NULL,
`article_id` BIGINT NOT NULL,
SHARD KEY (`blog_id`),
UNIQUE KEY (`blog_id`, `article_id`),
KEY (`blog_id`),
KEY (`article_id`)
);

CREATE TABLE `fixtures_visa_permission` (
`visa_id` BIGINT NOT NULL,
`permission_id` BIGINT NOT NULL,
SHARD KEY (`visa_id`),
UNIQUE KEY (`visa_id`, `permission_id`),
KEY (`visa_id`),
KEY (`permission_id`)
);

CREATE TABLE `fixtures_book_person` (
`book_id` BIGINT NOT NULL,
`person_id` TEXT NOT NULL,
SHARD KEY (`book_id`),
UNIQUE KEY (`book_id`, `person_id`),
KEY (`book_id`),
KEY (`person_id`)
);

CREATE TABLE `fixtures_naturalkeything_naturalkeything` (
`from_naturalkeything_id` TEXT NOT NULL,
`to_naturalkeything_id` TEXT NOT NULL,
SHARD KEY (`from_naturalkeything_id`),
UNIQUE KEY (`from_naturalkeything_id`, `to_naturalkeything_id`),
KEY (`from_naturalkeything_id`),
KEY (`to_naturalkeything_id`)
);
56 changes: 49 additions & 7 deletions tests/fixtures/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
from django.contrib.contenttypes.models import ContentType
from django.db import models

from django_singlestore.schema import ModelStorageManager


class Category(models.Model):
title = models.CharField(max_length=100)
Expand Down Expand Up @@ -44,13 +46,21 @@ class Blog(models.Model):
Article, models.CASCADE, related_name="fixtures_featured_set"
)
articles = models.ManyToManyField(
Article, blank=True, related_name="fixtures_articles_set"
)
Article, blank=True, related_name="fixtures_articles_set", through="BlogArticle")

def __str__(self):
return self.name


class BlogArticle(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
article = models.ForeignKey(Article, on_delete=models.CASCADE)

class Meta:
unique_together = (('blog', 'article'),)
db_table = "fixtures_blog_article"


class Tag(models.Model):
name = models.CharField(max_length=100)
tagged_type = models.ForeignKey(
Expand All @@ -74,7 +84,7 @@ def get_by_natural_key(self, name):

class Person(models.Model):
objects = PersonManager()
name = models.CharField(max_length=100, unique=True)
name = models.CharField(max_length=100, primary_key=True)

class Meta:
ordering = ("name",)
Expand Down Expand Up @@ -103,7 +113,7 @@ class Meta:

class Visa(models.Model):
person = models.ForeignKey(Person, models.CASCADE)
permissions = models.ManyToManyField(Permission, blank=True)
permissions = models.ManyToManyField(Permission, blank=True, through="VisaPermission")

def __str__(self):
return "%s %s" % (
Expand All @@ -112,9 +122,18 @@ def __str__(self):
)


class VisaPermission(models.Model):
visa = models.ForeignKey(Visa, on_delete=models.CASCADE)
permission = models.ForeignKey(Permission, on_delete=models.CASCADE)

class Meta:
unique_together = (('visa', 'permission'),)
db_table = "fixtures_visa_permission"


class Book(models.Model):
name = models.CharField(max_length=100)
authors = models.ManyToManyField(Person)
authors = models.ManyToManyField(Person, through="BookPerson")

class Meta:
ordering = ("name",)
Expand All @@ -124,6 +143,15 @@ def __str__(self):
return "%s by %s" % (self.name, authors) if authors else self.name


class BookPerson(models.Model):
book = models.ForeignKey(Book, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)

class Meta:
unique_together = (('book', 'person'),)
db_table = "fixtures_book_person"


class PrimaryKeyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)

Expand All @@ -139,10 +167,11 @@ class NaturalKeyThing(models.Model):
"NaturalKeyThing", on_delete=models.CASCADE, null=True
)
other_things = models.ManyToManyField(
"NaturalKeyThing", related_name="thing_m2m_set"
)
"NaturalKeyThing", related_name="thing_m2m_set", through="NaturalKeyThingNaturalKeyThing")

objects = NaturalKeyManager()
storage = ModelStorageManager(table_storage_type="REFERENCE")


def natural_key(self):
return (self.key,)
Expand All @@ -151,11 +180,22 @@ def __str__(self):
return self.key


class NaturalKeyThingNaturalKeyThing(models.Model):
from_naturalkeything = models.ForeignKey(NaturalKeyThing, on_delete=models.CASCADE, related_name="from_naturalkeything")
to_naturalkeything = models.ForeignKey(NaturalKeyThing, on_delete=models.CASCADE, related_name="to_naturalkeything")

class Meta:
unique_together = (('from_naturalkeything', 'to_naturalkeything'),)
db_table = "fixtures_naturalkeything_naturalkeything"


class CircularA(models.Model):
key = models.CharField(max_length=3, unique=True)
obj = models.ForeignKey("CircularB", models.SET_NULL, null=True)

objects = NaturalKeyManager()
storage = ModelStorageManager(table_storage_type="REFERENCE")


def natural_key(self):
return (self.key,)
Expand All @@ -166,6 +206,8 @@ class CircularB(models.Model):
obj = models.ForeignKey("CircularA", models.SET_NULL, null=True)

objects = NaturalKeyManager()
storage = ModelStorageManager(table_storage_type="REFERENCE")


def natural_key(self):
return (self.key,)
Loading