45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from peewee import CharField, UUIDField, SmallIntegerField, TextField, ForeignKeyField, JOIN
|
|
|
|
from lib.domain.Town import Town
|
|
from lib.domain.BaseModel import BaseModel
|
|
from lib.domain.ZipCode import ZipCode
|
|
|
|
|
|
class Applicant(BaseModel):
|
|
class Meta:
|
|
table_name = "applicants"
|
|
|
|
id = UUIDField(primary_key=True)
|
|
title = SmallIntegerField(default=0)
|
|
first_name = CharField(null=False)
|
|
last_name = CharField(null=False)
|
|
street = CharField()
|
|
house_number = CharField()
|
|
zip_code = ForeignKeyField(ZipCode, column_name="zip_code", null=True)
|
|
phone_number = CharField()
|
|
mobile_number = CharField()
|
|
email_address = CharField()
|
|
salutation = TextField(null=False)
|
|
|
|
@classmethod
|
|
def select_table_data(cls, search_query: str):
|
|
return (
|
|
Applicant
|
|
.select(
|
|
Applicant.id,
|
|
Applicant.first_name,
|
|
Applicant.last_name,
|
|
ZipCode.id,
|
|
ZipCode.zip_code,
|
|
Town.town
|
|
)
|
|
.join(ZipCode, join_type="LEFT JOIN")
|
|
.join(Town, join_type="LEFT JOIN")
|
|
.where(
|
|
(Applicant.first_name.contains(search_query)) |
|
|
(Applicant.last_name.contains(search_query)) |
|
|
(ZipCode.zip_code.contains(search_query)) |
|
|
(Town.town.contains(search_query))
|
|
)
|
|
)
|