```
CREATE TABLE [tenant]
(
[id] INT PRIMARY KEY IDENTITY(1,1),
[property_spv_id] INT,
[status] NVARCHAR(50),
[start_date] DATETIME2,
[end_date] DATETIME2,
[created_at] DATETIME2,
[updated_at] DATETIME2,
FOREIGN KEY ([property_id]) REFERENCES [property]([property_spv_id])
);
```
```
CREATE TABLE [user_tenant]
(
[user_tenant_id] INT IDENTITY(1,1) PRIMARY KEY,
[user_tenant_property_id] INT,
[user_id] INT,
[created_on] DATETIME2,
[updated_on] DATETIME2,
[role] NVARCHAR(50) DEFAULT 'PRIMARY',
FOREIGN KEY ([user_tenant_property_id]) REFERENCES [tenant]([id]),
FOREIGN KEY ([user_id]) REFERENCES [users]([user_id])
);
```
```
CREATE TABLE [user_tenant_role]
(
[user_role_id] INT IDENTITY(1,1) PRIMARY KEY,
[role_id] INT,
[user_id] INT,
[is_active] BIT DEFAULT 1,
[created_on] DATETIME2,
[created_by] UNIQUEIDENTIFIER NULL,
[updated_on] DATETIME2,
[updated_by] UNIQUEIDENTIFIER NULL,
FOREIGN KEY ([role_id]) REFERENCES [role]([role_id]),
FOREIGN KEY ([user_id]) REFERENCES [users]([user_id])
);
```
```
CREATE TABLE [property_rent]
(
[id] INT PRIMARY KEY IDENTITY(1,1),
[property_spv_id] INT,
[rent_price] INT,
[status] NVARCHAR(50) DEFAULT 'ACTIVE',
[created_at] DATETIME,
[updated_at] DATETIME,
[effective_date] DATETIME,
FOREIGN KEY ([property_spv_id]) REFERENCES [property]([property_spv_id])
);
```
```
CREATE TABLE maintenance_type (
id INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(255),
descriptions VARCHAR(255),
file_id INT,
status VARCHAR(255) DEFAULT 'Active',
created_at DATETIME2,
updated_at DATETIME2,
FOREIGN KEY (file_id) REFERENCES media_files(id)
)
```
```
CREATE TABLE [maintenance_requests]
(
[id] INT PRIMARY KEY IDENTITY(1,1),
[user_tenant_id] INT,
[maintenance_type_id] INT,
[urgency] NVARCHAR(50) DEFAULT 'MEDIUM',
[created_by] INT,
[status] NVARCHAR(50) DEFAULT 'OPEN',
[request_date] DATETIME,
[appointment_date] DATETIME,
[created_at] DATETIME,
[updated_at] DATETIME,
[attachment_id] INT NULL,
FOREIGN KEY ([user_tenant_id]) REFERENCES [user_tenant]([user_tenant_id]),
FOREIGN KEY ([maintenance_type_id]) REFERENCES [maintenance_type]([id]),
FOREIGN KEY ([attachment_id]) REFERENCES [media_files]([id])
);
```
```
CREATE TABLE [media_files]
(
[id] INT PRIMARY KEY IDENTITY(1,1),
[file_name] VARCHAR(255),
[mime] VARCHAR(50),
[file_size] INT,
[file_path] VARCHAR(255) NULL,
[s3_key] VARCHAR(255) NULL,
[created_at] DATETIME2 NOT NULL,
[updated_on] DATETIME2 NOT NULL
);
```
```
CREATE TABLE maintenance_comments (
id INT PRIMARY KEY IDENTITY(1,1),
maintenance_request_id INT,
comment VARCHAR(255),
commenter_id INT,
created_at DATETIME2,
updated_at DATETIME2,
attachment_id INT,
FOREIGN KEY (maintenance_request_id) REFERENCES maintenance_requests(id),
FOREIGN KEY (commenter_id) REFERENCES users(user_id),
FOREIGN KEY (attachment_id) REFERENCES media_files(id)
);
```
```
CREATE TABLE user_tenant_invitations (
id INT PRIMARY KEY IDENTITY(1,1),
email VARCHAR(128),
user_tenant_id INT,
FOREIGN KEY (user_tenant_id) REFERENCES tenant(id)
);
```
```
CREATE TABLE reward_activity (
id INT PRIMARY KEY IDENTITY(1,1),
subscriber_id INT,
activity VARCHAR(255),
description VARCHAR(255),
rewardPoints VARCHAR(255),
type VARCHAR(255),
created_on DATETIME2 DEFAULT GETDATE(),
updated_on DATETIME2 DEFAULT GETDATE(),
FOREIGN KEY (subscriber_id) REFERENCES subscriber(id)
);
```
```
CREATE TABLE brand_gift_card_request (
id INT PRIMARY KEY IDENTITY(1,1),
user_id INT,
brand VARCHAR(255),
is_gifted_by_team BIT DEFAULT 1,
created_on DATETIME2 DEFAULT GETDATE(),
updated_on DATETIME2 DEFAULT GETDATE(),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
```
```
CREATE TABLE user_give_back_organization (
id INT PRIMARY KEY IDENTITY(1,1),
organization_name VARCHAR(255),
user_id INT,
created_on DATETIME DEFAULT GETDATE(),
updated_on DATETIME DEFAULT GETDATE(),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
```
```
Alter table loyalty_nfts
Add is_Profile_Nft Bit DEFAULT 0;
Alter table subscriber
Add token_wallet_address varchar(250)
```