51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
from typing import Optional, Union, List
|
|
|
|
import databases
|
|
import ormar
|
|
import sqlalchemy
|
|
|
|
database = databases.Database("sqlite:///db.sqlite")
|
|
metadata = sqlalchemy.MetaData()
|
|
|
|
|
|
class Author(ormar.Model):
|
|
class Meta:
|
|
tablename = "authors"
|
|
database = database
|
|
metadata = metadata
|
|
|
|
id = ormar.Integer(primary_key=True)
|
|
first_name = ormar.String(max_length=80)
|
|
last_name = ormar.String(max_length=80)
|
|
|
|
|
|
class Category(ormar.Model):
|
|
class Meta:
|
|
tablename = "categories"
|
|
database = database
|
|
metadata = metadata
|
|
|
|
id = ormar.Integer(primary_key=True)
|
|
name = ormar.String(max_length=40)
|
|
|
|
|
|
class PostCategory(ormar.Model):
|
|
class Meta:
|
|
tablename = "posts_categories"
|
|
database = database
|
|
metadata = metadata
|
|
|
|
# If there are no additional columns id will be created automatically as Integer
|
|
|
|
|
|
class Post(ormar.Model):
|
|
class Meta:
|
|
tablename = "posts"
|
|
database = database
|
|
metadata = metadata
|
|
|
|
id = ormar.Integer(primary_key=True)
|
|
title = ormar.String(max_length=200)
|
|
categories: Optional[Union[Category, List[Category]]] = ormar.ManyToMany(Category, through=PostCategory)
|
|
author= ormar.ForeignKey(Author)
|