๐Ÿ—‚๏ธ KEELANCE SAAS - STORAGE MIGRATION =================================== Found 46 companies in database ๐Ÿ“ CURRENT STORAGE STRUCTURE =========================== โš ๏ธ contracts: directory not found โš ๏ธ pdfs: directory not found โš ๏ธ receipts: directory not found ๐Ÿ”„ MIGRATION PROCESS ==================== ๐Ÿข Processing Company: Default Company (ID: 1) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Pixelvise (ID: 2) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Lit Hood (ID: 11) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Illuminati (ID: 12) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: AA (ID: 13) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Armadyne (ID: 15) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Test1 (ID: 16) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: com1 (ID: 17) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Company2 (ID: 18) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Axentra International (ID: 19) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Axentra International (ID: 20) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Axentra International (ID: 21) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: ffff@mail.com (ID: 22) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: TestA (ID: 23) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Test1 (ID: 25) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: CompanyA (ID: 26) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Company1 (ID: 27) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Company4 (ID: 28) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Company3 (ID: 29) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Company5 (ID: 30) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Illu (ID: 33) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Axentra (ID: 34) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: VOID (ID: 35) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: indiancraig (ID: 37) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: uscraig (ID: 38) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: aaaa111111 (ID: 39) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: cccom (ID: 41) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: CompanyA123 (ID: 42) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: testcom123 (ID: 43) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: qqqqqqqqq (ID: 44) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: TEstUSR1 (ID: 45) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: LOLTEST (ID: 46) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: jweiceji (ID: 47) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: LOLTEST2 (ID: 48) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: lol1 (ID: 49) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: fccaidsjsciks (ID: 50) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Arukas (ID: 51) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: dwfwfwffw (ID: 52) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: AAA (ID: 53) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: WWWWWWW (ID: 54) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: geesewgbwgwe (ID: 55) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: hmngdbfdvc (ID: 56) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Test1122 (ID: 57) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: knfkenfkj (ID: 58) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: test123456 (ID: 59) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿข Processing Company: Pixelvise Academy (ID: 60) โš ๏ธ contracts: source directory not found โš ๏ธ pdfs: source directory not found โš ๏ธ receipts: source directory not found ๐Ÿ”— UPDATING DATABASE PATHS ========================== ๐Ÿ“ Updating proposals.pdf_path... ๐Ÿ“Š proposals: 0 records updated ๐Ÿ“ Updating invoices.pdf_path... โœ… Record 27: /storage/companies/2/invoices/invoice_27_2025-12-02_05-43-15.pdf โ†’ /storage/companies/2/pdfs/invoice_27_2025-12-02_05-43-15.pdf โœ… Record 28: /storage/companies/11/invoices/invoice_28_2025-12-02_05-44-01.pdf โ†’ /storage/companies/11/pdfs/invoice_28_2025-12-02_05-44-01.pdf โœ… Record 29: /storage/companies/2/invoices/invoice_29_2025-12-02_06-08-54.pdf โ†’ /storage/companies/2/pdfs/invoice_29_2025-12-02_06-08-54.pdf โœ… Record 30: /storage/companies/2/invoices/invoice_30_2025-12-02_08-01-36.pdf โ†’ /storage/companies/2/pdfs/invoice_30_2025-12-02_08-01-36.pdf โœ… Record 31: /storage/companies/2/invoices/invoice_31_2025-12-03_06-38-05.pdf โ†’ /storage/companies/2/pdfs/invoice_31_2025-12-03_06-38-05.pdf โœ… Record 33: /storage/companies/34/invoices/invoice_33_2025-12-04_10-58-39.pdf โ†’ /storage/companies/34/pdfs/invoice_33_2025-12-04_10-58-39.pdf โœ… Record 35: /storage/companies/34/invoices/invoice_35_2025-12-04_16-55-48.pdf โ†’ /storage/companies/34/pdfs/invoice_35_2025-12-04_16-55-48.pdf โœ… Record 50: /storage/companies/34/invoices/invoice_50_2025-12-05_07-17-18.pdf โ†’ /storage/companies/34/pdfs/invoice_50_2025-12-05_07-17-18.pdf โœ… Record 51: /storage/companies/34/invoices/invoice_51_2025-12-05_07-17-35.pdf โ†’ /storage/companies/34/pdfs/invoice_51_2025-12-05_07-17-35.pdf โœ… Record 52: /storage/companies/34/invoices/invoice_52_2025-12-05_07-18-02.pdf โ†’ /storage/companies/34/pdfs/invoice_52_2025-12-05_07-18-02.pdf โœ… Record 53: /storage/companies/34/invoices/invoice_53_2025-12-05_07-18-19.pdf โ†’ /storage/companies/34/pdfs/invoice_53_2025-12-05_07-18-19.pdf โœ… Record 54: /storage/companies/34/invoices/invoice_54_2025-12-08_09-16-14.pdf โ†’ /storage/companies/34/pdfs/invoice_54_2025-12-08_09-16-14.pdf โœ… Record 55: /storage/companies/34/invoices/invoice_55_2025-12-08_09-25-59.pdf โ†’ /storage/companies/34/pdfs/invoice_55_2025-12-08_09-25-59.pdf โœ… Record 56: /storage/companies/34/invoices/invoice_56_2025-12-08_09-31-35.pdf โ†’ /storage/companies/34/pdfs/invoice_56_2025-12-08_09-31-35.pdf โœ… Record 57: /storage/companies/34/invoices/invoice_57_2026-01-09_18-28-38.pdf โ†’ /storage/companies/34/pdfs/invoice_57_2026-01-09_18-28-38.pdf ๐Ÿ“Š invoices: 15 records updated ๐Ÿ“ Updating contracts.pdf_path... โœ… Record 12: /storage/companies/2/contracts/contract_12_v2.pdf โ†’ /storage/companies/2/contracts/contract_12_v2.pdf โœ… Record 13: /storage/companies/2/contracts/contract_13_v2.pdf โ†’ /storage/companies/2/contracts/contract_13_v2.pdf โœ… Record 15: /storage/companies/11/contracts/contract_15_v3.pdf โ†’ /storage/companies/11/contracts/contract_15_v3.pdf โœ… Record 19: /storage/companies/11/contracts/contract_19_v2.pdf โ†’ /storage/companies/11/contracts/contract_19_v2.pdf โœ… Record 20: /storage/companies/2/contracts/contract_20_v3.pdf โ†’ /storage/companies/2/contracts/contract_20_v3.pdf โœ… Record 21: /storage/companies/2/contracts/contract_21_v2.pdf โ†’ /storage/companies/2/contracts/contract_21_v2.pdf โœ… Record 22: /storage/companies/2/contracts/contract_22_v2.pdf โ†’ /storage/companies/2/contracts/contract_22_v2.pdf โœ… Record 23: /storage/companies/2/contracts/contract_23_v2.pdf โ†’ /storage/companies/2/contracts/contract_23_v2.pdf โœ… Record 24: /storage/companies/2/contracts/contract_24_v2.pdf โ†’ /storage/companies/2/contracts/contract_24_v2.pdf โœ… Record 25: /storage/companies/2/contracts/contract_25_v2.pdf โ†’ /storage/companies/2/contracts/contract_25_v2.pdf โœ… Record 26: /storage/companies/2/contracts/contract_26_v2.pdf โ†’ /storage/companies/2/contracts/contract_26_v2.pdf โœ… Record 27: /storage/companies/2/contracts/contract_27_v2.pdf โ†’ /storage/companies/2/contracts/contract_27_v2.pdf โœ… Record 28: /storage/companies/2/contracts/contract_28_v2.pdf โ†’ /storage/companies/2/contracts/contract_28_v2.pdf โœ… Record 29: /storage/companies/2/contracts/contract_29_v2.pdf โ†’ /storage/companies/2/contracts/contract_29_v2.pdf โœ… Record 31: /storage/companies/34/contracts/contract_31_v2.pdf โ†’ /storage/companies/34/contracts/contract_31_v2.pdf โœ… Record 32: /storage/companies/34/contracts/contract_32_v3.pdf โ†’ /storage/companies/34/contracts/contract_32_v3.pdf โœ… Record 33: /storage/companies/34/contracts/contract_33_v2.pdf โ†’ /storage/companies/34/contracts/contract_33_v2.pdf โœ… Record 34: /storage/companies/34/contracts/contract_34_v2.pdf โ†’ /storage/companies/34/contracts/contract_34_v2.pdf โœ… Record 35: /storage/companies/34/contracts/contract_35_v2.pdf โ†’ /storage/companies/34/contracts/contract_35_v2.pdf โœ… Record 36: /storage/companies/34/contracts/contract_36_v2.pdf โ†’ /storage/companies/34/contracts/contract_36_v2.pdf โœ… Record 37: /storage/companies/34/contracts/contract_37_v3.pdf โ†’ /storage/companies/34/contracts/contract_37_v3.pdf ๐Ÿ“Š contracts: 21 records updated ๐Ÿงน CLEANUP OPTIONS ================== After verifying the migration is successful, you can: 1. Remove old storage directories: rm -rf storage/contracts storage/pdfs storage/receipts 2. Keep them as backup until you're confident everything works 3. Run this script again if you add more companies โœ… STORAGE MIGRATION COMPLETE! ============================== โœ… Company-specific directories created โœ… Files migrated to company folders โœ… Database paths updated โœ… Multi-tenant storage structure ready ๐ŸŽฏ NEW STORAGE STRUCTURE: ======================== storage/ โ”œโ”€โ”€ companies/ โ”‚ โ”œโ”€โ”€ 1/ (Company ID 1) โ”‚ โ”‚ โ”œโ”€โ”€ contracts/ โ”‚ โ”‚ โ”œโ”€โ”€ pdfs/ โ”‚ โ”‚ โ”œโ”€โ”€ receipts/ โ”‚ โ”‚ โ”œโ”€โ”€ proposals/ โ”‚ โ”‚ โ”œโ”€โ”€ invoices/ โ”‚ โ”‚ โ”œโ”€โ”€ logos/ โ”‚ โ”‚ โ”œโ”€โ”€ signatures/ โ”‚ โ”‚ โ””โ”€โ”€ temp/ โ”‚ โ”œโ”€โ”€ 2/ (Company ID 2) โ”‚ โ””โ”€โ”€ ... (other companies) โ””โ”€โ”€ ... (other storage directories) ๐Ÿš€ NEXT STEPS: ============== 1. Test the platform to ensure all files download correctly 2. Verify PDF generation works for proposals, invoices, and contracts 3. Check that file uploads work properly 4. Remove old storage directories when confident 5. Update any remaining hardcoded paths in custom code ๐ŸŽ‰ YOUR MULTI-TENANT STORAGE IS READY!