add models for new DB design
This commit is contained in:
65
app/models/realEstate.js
Normal file
65
app/models/realEstate.js
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = (sequelize, DataTypes) => {
|
||||||
|
const RealEstate = sequelize.define("RealEstate", {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.BIGINT,
|
||||||
|
autoIncrement: true,
|
||||||
|
allowNull: false,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
agencyObjectId: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
originAgencyName: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
realEstateType: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
adType: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
price: DataTypes.REAL,
|
||||||
|
area: DataTypes.REAL,
|
||||||
|
gardenSize: DataTypes.REAL,
|
||||||
|
streetNumber: DataTypes.INTEGER,
|
||||||
|
streetName: DataTypes.TEXT,
|
||||||
|
locality: DataTypes.TEXT,
|
||||||
|
municipality: DataTypes.TEXT,
|
||||||
|
city: DataTypes.TEXT,
|
||||||
|
region: DataTypes.TEXT,
|
||||||
|
entity: DataTypes.TEXT,
|
||||||
|
country: DataTypes.TEXT,
|
||||||
|
locationLat: DataTypes.REAL,
|
||||||
|
locationLong: DataTypes.REAL,
|
||||||
|
lastTimeCrawled: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
deleted: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
sold: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
RealEstate.associate = models => {
|
||||||
|
RealEstate.belongsToMany(models.SearchRequestMatch, {
|
||||||
|
through: "SearchRequestMatch"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return RealEstate;
|
||||||
|
};
|
||||||
61
app/models/searchRequest.js
Normal file
61
app/models/searchRequest.js
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = (sequelize, DataTypes) => {
|
||||||
|
const SearchRequest = sequelize.define("SearchRequest", {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
allowNull: false,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
areaToSearch: {
|
||||||
|
type: DataTypes.GEOMETRY("POINT", 4326),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
realEstateType: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
adType: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
email: DataTypes.TEXT,
|
||||||
|
locality: DataTypes.TEXT,
|
||||||
|
municipality: DataTypes.TEXT,
|
||||||
|
city: DataTypes.TEXT,
|
||||||
|
region: DataTypes.TEXT,
|
||||||
|
entity: DataTypes.TEXT,
|
||||||
|
country: DataTypes.TEXT,
|
||||||
|
sizeMin: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
sizeMax: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
priceMin: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
priceMax: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
gardenSizeMin: DataTypes.INTEGER,
|
||||||
|
gardenSizeMax: DataTypes.INTEGER,
|
||||||
|
subscribed: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
SearchRequest.associate = models => {
|
||||||
|
SearchRequest.belongsToMany(models.SearchRequestMatch, {
|
||||||
|
through: "SearchRequestMatch"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return SearchRequest;
|
||||||
|
};
|
||||||
47
app/models/searchRequestMatch.js
Normal file
47
app/models/searchRequestMatch.js
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = (sequelize, DataTypes) => {
|
||||||
|
const SearchRequestMatch = sequelize.define(
|
||||||
|
"SearchRequestMatch",
|
||||||
|
{
|
||||||
|
id: {
|
||||||
|
type: DataTypes.BIGINT,
|
||||||
|
autoIncrement: true,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
searchRequestId: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
allowNull: false,
|
||||||
|
primaryKey: true,
|
||||||
|
references: {
|
||||||
|
model: "SearchRequest",
|
||||||
|
key: "id"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
realEstateId: {
|
||||||
|
type: DataTypes.BIGINT,
|
||||||
|
allowNull: false,
|
||||||
|
primaryKey: true,
|
||||||
|
references: {
|
||||||
|
model: "RealEstate",
|
||||||
|
key: "id"
|
||||||
|
},
|
||||||
|
onUpdate: "CASCADE",
|
||||||
|
onDelete: "SET NULL"
|
||||||
|
},
|
||||||
|
notified: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: {
|
||||||
|
singular: "searchRequestMatch",
|
||||||
|
plural: "searchRequestMatches"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return SearchRequestMatch;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user