Files

78 lines
2.4 KiB
Markdown

# Import Scripts
## Units Import from XLSX
This script imports unit data from an Excel (XLSX) file into the database.
### Usage
```bash
bun run import:units <path-to-xlsx-file>
```
Or directly:
```bash
bun run scripts/import-units.ts <path-to-xlsx-file>
```
### Example
```bash
bun run import:units ./data/units.xlsx
```
### Required XLSX Format
The Excel file must have the following columns (headers in first row):
| Column Name | Type | Description |
|-------------|------|-------------|
| Project Name | String | Name of the project (required) |
| Floor | Number | Floor number (required) |
| Unit No. | String | Unit number/identifier (required) |
| Unit Series | String | Unit series identifier |
| No of Parking Space | Number | Number of parking spaces |
| Suits Area (sqft) | Number | Suite area in square feet |
| Balcony Area (sqft) | Number | Balcony area in square feet |
| Total Square Ft. | Number | Total area in square feet |
| Unit Type Variant | String | Unit type variant (e.g., "1BR", "2BR+Study") |
| Unit View | String | View description (e.g., "Marina View", "Sea View") |
### Features
- **Duplicate Detection**: Checks if a unit already exists (by Project Name + Unit No.)
- **Update Existing**: Updates existing units instead of creating duplicates
- **Auto-generation**: Automatically generates:
- Project slug (URL-friendly version of project name)
- Unit type variant slug
- Unit type (e.g., "1 Bedroom" from "1BR")
- Number of bathrooms (inferred from bedroom count)
- Unit number (extracted from Unit No.)
- Wing (East/West, if mentioned in Unit View)
- Side (left/right, based on unit number)
### Default Values
The following fields are set to default values and may need to be updated separately:
- `salesPrice`: 0 (not in XLSX format)
- `state`: "available"
- `isLoft`: false
### Import Summary
After completion, the script displays:
- Total rows processed
- Number of new units imported
- Number of existing units updated
- Number of rows skipped (due to missing data)
- Number of errors encountered
### Notes
1. Make sure your database connection is properly configured in `.env`
2. The script uses the unique constraint on (project, unitNo) to prevent duplicates
3. You may need to adjust the helper functions (`getWing`, `getSide`, etc.) based on your specific project requirements
4. Review the imported data and update `salesPrice` and other fields as needed