File size: 2,566 Bytes
11e7313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from flask_sqlalchemy import SQLAlchemy
import uuid
from sqlalchemy.dialects.postgresql import JSON,ARRAY
from sqlalchemy.ext.mutable import MutableList

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(50), nullable=False)
    last_name = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(100), unique=True, nullable=False)
    phone=db.Column(db.String(15), nullable=False)
    password = db.Column(db.String(200), nullable=False)


class LostItem(db.Model):
    __tablename__="lostItem"
    id = db.Column(db.Integer, primary_key=True, index=True)
    user_id = db.Column(db.Integer, db.ForeignKey("users.id"),nullable=False)
    name=db.Column(db.String,nullable=False)
    email=db.Column(db.String,nullable=False)
    phone=db.Column(db.String,nullable=False)
    description = db.Column(db.Text, nullable=False)
    lastSeenLocation = db.Column(db.Text, nullable=False)
    dateTimeLost = db.Column(db.Text, nullable=False)
    reward = db.Column(db.Text)
    additionalNotes  = db.Column(db.Text)
    image_url = db.Column(JSON, nullable=False)
    status=db.Column(db.String,nullable=False,default='active')
    found_items=db.Column(MutableList.as_mutable(ARRAY(db.String)),nullable=False)
    created_at = db.Column(db.TIMESTAMP, server_default=db.func.now(),nullable=False)

class FoundItem(db.Model):
    __tablename__="foundItem"
    id = db.Column(db.Integer, primary_key=True, index=True)
    user_id = db.Column(db.Integer, db.ForeignKey("users.id"),nullable=False)
    name=db.Column(db.String,nullable=False)
    email=db.Column(db.String,nullable=False)
    phone=db.Column(db.String,nullable=False)
    description = db.Column(db.Text, nullable=False)
    found_near= db.Column(db.Text, nullable=False)
    image_url = db.Column(JSON, nullable=False)
    status=db.Column(db.String,nullable=False,default='active')
    lost_items=db.Column(MutableList.as_mutable(ARRAY(db.String)),nullable=False)
    created_at = db.Column(db.TIMESTAMP, server_default=db.func.now(),nullable=False)

class Match(db.Model):
    __tablename__="matches"
    id = db.Column(db.Integer, primary_key=True, index=True)
    lost_item_id = db.Column(db.Integer, db.ForeignKey("lostItem.id"),nullable=False)
    found_item_id = db.Column(db.Integer, db.ForeignKey("foundItem.id"),nullable=False)
    confidence_score=db.Column(db.Float,nullable=False)
    created_at = db.Column(db.TIMESTAMP, server_default=db.func.now(),nullable=False)