diff --git a/seed-data/genres.json b/seed-data/genres.json new file mode 100644 index 0000000..50b397a --- /dev/null +++ b/seed-data/genres.json @@ -0,0 +1,38 @@ +[ + { + "genre_id": 1, + "genre_name": "Comedy" + }, + { + "genre_id": 2, + "genre_name": "Drama" + }, + { + "genre_id": 3, + "genre_name": "Western" + }, + { + "genre_id": 4, + "genre_name": "Fantasy" + }, + { + "genre_id": 5, + "genre_name": "Thriller" + }, + { + "genre_id": 6, + "genre_name": "Sci-Fi" + }, + { + "genre_id": 7, + "genre_name": "Action" + }, + { + "genre_id": 8, + "genre_name": "Mystery" + }, + { + "genre_id": 9, + "genre_name": "Crime" + } +] \ No newline at end of file diff --git a/seed-data/import.js b/seed-data/import.js new file mode 100644 index 0000000..bf218da --- /dev/null +++ b/seed-data/import.js @@ -0,0 +1,35 @@ +const { MongoClient } = require('mongodb'); +const fs = require('fs'); + +const url = 'mongodb://root:root@localhost:27017/?authSource=admin'; +const dbName = 'magic-stream-movies'; + +async function importJson(collectionName, jsonFilePath) { + const client = new MongoClient(url); + + try { + await client.connect(); + console.log('Connected to MongoDB successfully.'); + + const db = client.db(dbName); + const collection = db.collection(collectionName); + + const rawData = fs.readFileSync(jsonFilePath, 'utf-8'); + const jsonData = JSON.parse(rawData); + + const documents = Array.isArray(jsonData) ? jsonData : [jsonData]; + + const result = await collection.insertMany(documents); + console.log(`${result.insertedCount} documents successfully imported!`); + + } catch (error) { + console.error('An error occurred during the import:', error); + } finally { + await client.close(); + } +} + +importJson('users', './users.json'); +importJson('genres', './genres.json'); +importJson('rankings', './rankings.json'); +importJson('movies', './movies.json'); diff --git a/seed-data/movies.json b/seed-data/movies.json new file mode 100644 index 0000000..d3b7fd5 --- /dev/null +++ b/seed-data/movies.json @@ -0,0 +1,297 @@ +[ + { + "imdb_id": "tt0111161", + "title": "The Shawshank Redemption", + "poster_path": "https://image.tmdb.org/t/p/w300/2GgerXCbCMgvt2kLwWEmJWCSG65.jpg", + "youtube_id": "PLl99DlL6b4", + "genre": [ + { + "genre_id": 2, + "genre_name": "Drama" + } + ], + "admin_review": "I loved the acting in this movie. It was absolutely sublime!", + "ranking": { + "ranking_value": 1, + "ranking_name": "Excellent" + } + }, + { + "imdb_id": "tt7131622", + "title": "Once upon a time in Hollywood", + "poster_path": "https://image.tmdb.org/t/p/w300/wQKeS2JrsRF8XSfd9zqflrc5gad.jpg", + "youtube_id": "ELeMaP8EPAA", + "genre": [ + { + "genre_id": 2, + "genre_name": "Drama" + }, + { + "genre_id": 1, + "genre_name": "Comedy" + } + ], + "admin_review": "This movie is awful.", + "ranking": { + "ranking_name": "Terrible", + "ranking_value": 5 + } + }, + { + "imdb_id": "tt0080339", + "title": "Airplane!", + "poster_path": "https://image.tmdb.org/t/p/w300/zOiB3p2WTTiwCFgTMnXuDGgzbTN.jpg", + "youtube_id": "07pPmCfKi3U", + "genre": [ + { + "genre_id": 1, + "genre_name": "Comedy" + } + ], + "admin_review": "I didn't love this movie but I didn't hate it either.", + "ranking": { + "ranking_value": 3, + "ranking_name": "Okay" + } + }, + { + "imdb_id": "tt1119646", + "title": "The Hangover", + "poster_path": "https://image.tmdb.org/t/p/w300/c15rH9S5JN83UXqu9iM4TQsW6Rl.jpg", + "youtube_id": "jj6wcUes1no", + "genre": [ + { + "genre_id": 1, + "genre_name": "Comedy" + } + ], + "admin_review": "I didn't love this movie but I didn't hate it either.", + "ranking": { + "ranking_value": 3, + "ranking_name": "Okay" + } + }, + { + "imdb_id": "tt0109040", + "title": "Ace Ventura: Pet Detective", + "poster_path": "https://image.tmdb.org/t/p/w300/dukxJWd72ffNWfqfFSVFFuym4RG.jpg", + "youtube_id": "qjBb1CKLpzE", + "genre": [ + { + "genre_id": 1, + "genre_name": "Comedy" + } + ], + "admin_review": "This is really not so great.", + "ranking": { + "ranking_value": 4, + "ranking_name": "Bad" + } + }, + { + "imdb_id": "tt0105695", + "title": "Unforgiven", + "poster_path": "https://image.tmdb.org/t/p/w300/7W0CsZBe5fkX29DvHBi5Ct1WqLe.jpg", + "youtube_id": "6_UlfsdGiEc", + "genre": [ + { + "genre_id": 2, + "genre_name": "Drama" + }, + { + "genre_id": 3, + "genre_name": "Western" + } + ], + "admin_review": "I hate this movie", + "ranking": { + "ranking_value": 5, + "ranking_name": "Terrible\n" + } + }, + { + "imdb_id": "tt0060196", + "title": "The Good, The Bad, and the Ugly", + "poster_path": "https://image.tmdb.org/t/p/w300/e881nA7p982CHL5GjI1LICwHMd7.jpg", + "youtube_id": "WCN5JJY_wiA", + "genre": [ + { + "genre_id": 3, + "genre_name": "Western" + } + ], + "admin_review": "I did not like this!", + "ranking": { + "ranking_value": 4, + "ranking_name": "Bad" + } + }, + { + "imdb_id": "tt0903624", + "title": "The Hobbit: An Unexpected Journey", + "poster_path": "https://image.tmdb.org/t/p/w300/vdAGcr1F6wJPRryeODVAcy2mU4z.jpg", + "youtube_id": "9PSXjr1gbjc", + "genre": [ + { + "genre_id": 4, + "genre_name": "Fantasy" + } + ], + "admin_review": "The movie was aweful! I really hated it.", + "ranking": { + "ranking_value": 5, + "ranking_name": "Terrible" + } + }, + { + "imdb_id": "tt0241527", + "title": "Harry Potter and the Philosopher's Stone", + "poster_path": "https://image.tmdb.org/t/p/w300/e6JYlushXIXK85JGfDHEFHrrNYK.jpg", + "youtube_id": "VyHV0BRtdxo", + "genre": [ + { + "genre_id": 4, + "genre_name": "Fantasy" + } + ], + "admin_review": "This movie wasn't great but it wasn't bad either.", + "ranking": { + "ranking_value": 3, + "ranking_name": "Okay" + } + }, + { + "imdb_id": "tt2267998", + "title": "Gone Girl", + "poster_path": "https://image.tmdb.org/t/p/w300/xpA0q0DJWKe7AY63pVPZbGLwuo5.jpg", + "youtube_id": "2-_-1nJf8Vg", + "genre": [ + { + "genre_id": 2, + "genre_name": "Drama" + }, + { + "genre_id": 4, + "genre_name": "Fantasy" + } + ], + "admin_review": "An okay but dark movie.", + "ranking": { + "ranking_value": 3, + "ranking_name": "Okay" + } + }, + { + "imdb_id": "tt8946378", + "title": "Knives Out", + "poster_path": "https://image.tmdb.org/t/p/w300/hVcCOlHU0HmGBBQNmS9RlalBXGz.jpg", + "youtube_id": "qGqiHJTsRkQ", + "genre": [ + { + "genre_id": 2, + "genre_name": "Drama" + }, + { + "genre_id": 5, + "genre_name": "Thriller" + }, + { + "genre_id": 8, + "genre_name": "Mystery" + } + ], + "admin_review": "The story was fantastic and the acting was sublime!", + "ranking": { + "ranking_value": 1, + "ranking_name": "Excellent" + } + }, + { + "imdb_id": "tt0080684", + "title": "Star Wars: The Empire Strikes Back", + "poster_path": "https://image.tmdb.org/t/p/w300/1mh82R1qLKwdutQVGnpHItdwPCP.jpg", + "youtube_id": "JNwNXF9Y6kY", + "genre": [ + { + "genre_id": 6, + "genre_name": "Sci-Fi" + }, + { + "genre_id": 4, + "genre_name": "Fantasy" + } + ], + "admin_review": "This is okay!", + "ranking": { + "ranking_name": "Okay", + "ranking_value": 3 + } + }, + { + "imdb_id": "tt0102975", + "title": "Star Trek: The Undiscovered Country", + "poster_path": "https://image.tmdb.org/t/p/w300/jukY1tFpuXgqrJLl1PvdOMarCvN.jpg", + "youtube_id": "RYA2q2Sm_Jo", + "genre": [ + { + "genre_id": 6, + "genre_name": "Sci-Fi" + }, + { + "genre_id": 7, + "genre_name": "Action" + } + ], + "admin_review": "It wasn't good but it wasn't too bad either.", + "ranking": { + "ranking_value": 3, + "ranking_name": "Okay" + } + }, + { + "imdb_id": "tt1297919", + "title": "Blitz", + "poster_path": "https://image.tmdb.org/t/p/w300/tI4fPu0LZ0FNdZdi6fvYGCRiuQs.jpg", + "youtube_id": "mhO2WJ3MNRI", + "genre": [ + { + "genre_id": 9, + "genre_name": "Crime" + }, + { + "genre_id": 7, + "genre_name": "Action" + }, + { + "genre_id": 5, + "genre_name": "Thriller" + } + ], + "admin_review": "This was a lovely movie!", + "ranking": { + "ranking_value": 1, + "ranking_name": "Excellent" + } + }, + { + "imdb_id": "tt0790724", + "title": "Jack Reacher", + "poster_path": "https://image.tmdb.org/t/p/w300/8sih1uieUopA9zrEO1meNhmm7aO.jpg", + "youtube_id": "A7FiWkyevqY", + "genre": [ + { + "genre_id": 7, + "genre_name": "Action" + }, + { + "genre_id": 5, + "genre_name": "Thriller" + } + ], + "admin_review": "This might be the worst movie that I have ever seen in my life!", + "ranking": { + "ranking_value": 5, + "ranking_name": "Terrible" + } + } +] \ No newline at end of file diff --git a/seed-data/package.json b/seed-data/package.json new file mode 100644 index 0000000..e298cd4 --- /dev/null +++ b/seed-data/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "mongodb": "^7.2.0" + } +} diff --git a/seed-data/pnpm-lock.yaml b/seed-data/pnpm-lock.yaml new file mode 100644 index 0000000..579d738 --- /dev/null +++ b/seed-data/pnpm-lock.yaml @@ -0,0 +1,125 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + mongodb: + specifier: ^7.2.0 + version: 7.2.0 + +packages: + + '@mongodb-js/saslprep@1.4.11': + resolution: {integrity: sha512-o9rAHc0IpIjuPSxRutWpE1F62x7n+4mVS4rCNHkzhIUMQcc18bb6xEq5wd2NdN0WjepIyXIppRshYI2kQDOZVA==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@13.0.0': + resolution: {integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==} + + bson@7.2.0: + resolution: {integrity: sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==} + engines: {node: '>=20.19.0'} + + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + mongodb-connection-string-url@7.0.1: + resolution: {integrity: sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==} + engines: {node: '>=20.19.0'} + + mongodb@7.2.0: + resolution: {integrity: sha512-F/2+BMZtLVhY30ioZp0dAmZ+IRZMBqI+nrv6t5+9/1AIwCa8sMRC3jBf81lpxMhnZgqq8CoUD503Z1oZWq1/sw==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.806.0 + '@mongodb-js/zstd': ^7.0.0 + gcp-metadata: ^7.0.1 + kerberos: ^7.0.0 + mongodb-client-encryption: '>=7.0.0 <7.1.0' + snappy: ^7.3.2 + socks: ^2.8.6 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + +snapshots: + + '@mongodb-js/saslprep@1.4.11': + dependencies: + sparse-bitfield: 3.0.3 + + '@types/webidl-conversions@7.0.3': {} + + '@types/whatwg-url@13.0.0': + dependencies: + '@types/webidl-conversions': 7.0.3 + + bson@7.2.0: {} + + memory-pager@1.5.0: {} + + mongodb-connection-string-url@7.0.1: + dependencies: + '@types/whatwg-url': 13.0.0 + whatwg-url: 14.2.0 + + mongodb@7.2.0: + dependencies: + '@mongodb-js/saslprep': 1.4.11 + bson: 7.2.0 + mongodb-connection-string-url: 7.0.1 + + punycode@2.3.1: {} + + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + webidl-conversions@7.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 diff --git a/seed-data/rankings.json b/seed-data/rankings.json new file mode 100644 index 0000000..8020c34 --- /dev/null +++ b/seed-data/rankings.json @@ -0,0 +1,26 @@ +[ + { + "ranking_value": 999, + "ranking_name": "Not_Ranked" + }, + { + "ranking_value": 1, + "ranking_name": "Excellent" + }, + { + "ranking_value": 2, + "ranking_name": "Good" + }, + { + "ranking_value": 3, + "ranking_name": "Okay" + }, + { + "ranking_value": 4, + "ranking_name": "Bad" + }, + { + "ranking_value": 5, + "ranking_name": "Terrible" + } +] \ No newline at end of file diff --git a/seed-data/users.json b/seed-data/users.json new file mode 100644 index 0000000..b5193f1 --- /dev/null +++ b/seed-data/users.json @@ -0,0 +1,88 @@ +[ + { + "user_id": "68385b9981097c6b4042dab4", + "first_name": "Bob", + "last_name": "Jones", + "email": "bobjones@hotmail.com", + "password": "$2a$10$FAd/ArLwxQ3WbNE3XKbyveRHidTpW9g84hX2CPr0tWdGGerrP6.3K", + "role": "ADMIN", + "created_at": { + "$date": "2025-05-29T13:05:29.000Z" + }, + "updated_at": { + "$date": "2025-05-29T13:06:51.000Z" + }, + "token": "", + "refresh_token": "", + "favourite_genres": [ + { + "genre_id": 1, + "genre_name": "Comedy" + }, + { + "genre_id": 4, + "genre_name": "Fantasy" + } + ] + }, + { + "user_id": "684535a8c3d7e6b4ac1c5203", + "first_name": "Sarah", + "last_name": "Smith", + "email": "sarahsmith@hotmail.com", + "password": "$2a$10$w0H8AI/xigWiq0hGsjyfqeWAR5d6oErWE4b7sz9uwCTKMwRIv49YW", + "role": "USER", + "created_at": { + "$date": "2025-06-08T07:03:04.865Z" + }, + "updated_at": { + "$date": "2025-06-23T09:26:11.000Z" + }, + "token": "", + "refresh_token": "", + "favourite_genres": [ + { + "genre_id": 5, + "genre_name": "Thriller" + }, + { + "genre_id": 6, + "genre_name": "Sci-fi" + }, + { + "genre_id": 8, + "genre_name": "Mystery" + } + ] + }, + { + "user_id": "68512bc5a29d3bfe81637e3f", + "first_name": "Ben", + "last_name": "Madison", + "email": "benmadison@hotmail.com", + "password": "$2a$10$0rCBUYy4ZlTzuxcf20XV1.s7UVTbtkXkARQmzb3vstja4uDnp.NS.", + "role": "USER", + "created_at": { + "$date": "2025-06-17T08:48:05.649Z" + }, + "updated_at": { + "$date": "2025-06-17T08:48:05.649Z" + }, + "token": "", + "refresh_token": "", + "favourite_genres": [ + { + "genre_id": 1, + "genre_name": "Comedy" + }, + { + "genre_id": 5, + "genre_name": "Thriller" + }, + { + "genre_id": 6, + "genre_name": "Sci-Fi" + } + ] + } +] \ No newline at end of file