File size: 2,903 Bytes
d2d3ca7
 
 
190ecd4
d2d3ca7
 
9135c43
d2d3ca7
190ecd4
d2d3ca7
6ed422e
190ecd4
 
 
 
 
 
 
 
 
 
 
 
 
d2d3ca7
 
 
190ecd4
d2d3ca7
6ed422e
190ecd4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d2d3ca7
 
 
 
 
190ecd4
d2d3ca7
 
 
 
 
 
 
 
 
 
190ecd4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from peewee import *
from datetime import datetime
from playhouse.sqlite_ext import *
import json

# Initialize database
db = SqliteExtDatabase('estate.db')

db_description = """Table "project" - list of real estate projects (novostavby) in Czech Republic
    url: url of the project.
    title: title of the project
    deposit: percentage of payment before completion
    min_price: lowest available apartment price in CZK with VAT
    status: status of the project (preparation, selling, sold out)
    city: city of the project
    lat: GPS latitude coordinates
    lng: GPS longitude coordinates
    start_year: year of construction start
    end_year: estimated year of construction end
    developer: name of the construction company
    ignore: if True, the project does not have any apartments for sale
    
    Apartment prices are stored in separate columns for each type:
    price_1kk, price_2kk, price_3kk, etc.
"""

class Project(Model):
    # Basic information
    url = CharField(unique=True)
    title = CharField(null=True)
    
    # Financial information
    deposit = IntegerField(null=True)  # percentage
    min_price = IntegerField(null=True)  # CZK with VAT
    
    # Apartment prices by type
    price_1kk = IntegerField(null=True)
    price_2kk = IntegerField(null=True)
    price_3kk = IntegerField(null=True)
    price_4kk = IntegerField(null=True)
    price_5kk = IntegerField(null=True)
    price_6kk = IntegerField(null=True)
    price_7kk = IntegerField(null=True)
    price_8kk = IntegerField(null=True)
    price_9kk = IntegerField(null=True)
    price_10kk = IntegerField(null=True)
    
    price_1_1 = IntegerField(null=True)
    price_2_1 = IntegerField(null=True)
    price_3_1 = IntegerField(null=True)
    price_4_1 = IntegerField(null=True)
    price_5_1 = IntegerField(null=True)
    price_6_1 = IntegerField(null=True)
    price_7_1 = IntegerField(null=True)
    price_8_1 = IntegerField(null=True)
    price_9_1 = IntegerField(null=True)
    price_10_1 = IntegerField(null=True)
    
    # Project information
    status = CharField(null=True)
    city = CharField(null=True)
    lat = FloatField(null=True)
    lng = FloatField(null=True)
    start_year = IntegerField(null=True)
    end_year = IntegerField(null=True)
    developer = CharField(null=True)
    
    # Additional data
    ignore = BooleanField(null=True)
    content = TextField(null=True)  # Keep raw content for reference
    structure = JSONField(null=True)  # Keep JSON for backward compatibility
    created_at = DateTimeField(default=datetime.now)

    class Meta:
        database = db


def init_database():
    """Initialize the database and create tables"""
    print("Initializing database...")
    db.connect()
    db.drop_tables([Project])
    db.create_tables([Project])
    print("Created tables successfully!")
    db.close()

if __name__ == "__main__":
    init_database()