61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from sqlalchemy import ForeignKey
 | 
						|
from sqlalchemy.orm import Mapped, mapped_column, relationship
 | 
						|
 | 
						|
from models_wms.base import BaseModel
 | 
						|
 | 
						|
 | 
						|
class PlaceType(BaseModel):
 | 
						|
    __tablename__ = 'place_type'
 | 
						|
 | 
						|
    id: Mapped[int] = mapped_column(primary_key=True)
 | 
						|
    name: Mapped[str] = mapped_column(nullable=False)
 | 
						|
    parent_id: Mapped[int] = mapped_column(
 | 
						|
        ForeignKey('place_type.id'),
 | 
						|
        nullable=True,
 | 
						|
    )
 | 
						|
    parent: Mapped['PlaceType'] = relationship(
 | 
						|
        'PlaceType',
 | 
						|
        lazy='noload',
 | 
						|
        back_populates='children',
 | 
						|
        primaryjoin='PlaceType.parent_id == PlaceType.id',
 | 
						|
        remote_side=[id],
 | 
						|
    )
 | 
						|
    children: Mapped[list['PlaceType']] = relationship(
 | 
						|
        'PlaceType',
 | 
						|
        lazy='selectin',
 | 
						|
        back_populates='parent',
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
class Place(BaseModel):
 | 
						|
    __tablename__ = 'place'
 | 
						|
 | 
						|
    id: Mapped[int] = mapped_column(primary_key=True)
 | 
						|
    number: Mapped[int] = mapped_column(nullable=False)
 | 
						|
 | 
						|
    place_type_id: Mapped[int] = mapped_column(
 | 
						|
        ForeignKey('place_type.id'),
 | 
						|
        nullable=False,
 | 
						|
    )
 | 
						|
    place_type: Mapped[PlaceType] = relationship(
 | 
						|
        'PlaceType',
 | 
						|
        lazy='joined',
 | 
						|
    )
 | 
						|
 | 
						|
    parent_id: Mapped[int] = mapped_column(
 | 
						|
        ForeignKey('place.id'),
 | 
						|
        nullable=True,
 | 
						|
    )
 | 
						|
    parent: Mapped['Place'] = relationship(
 | 
						|
        'Place',
 | 
						|
        lazy='noload',
 | 
						|
        back_populates='children',
 | 
						|
        primaryjoin='Place.parent_id == Place.id',
 | 
						|
        remote_side=[id],
 | 
						|
    )
 | 
						|
    children: Mapped[list['Place']] = relationship(
 | 
						|
        'Place',
 | 
						|
        lazy='selectin',
 | 
						|
        back_populates='parent',
 | 
						|
    )
 |