basic file "uploading" and listing
This commit is contained in:
		
							parent
							
								
									1eebe45e4e
								
							
						
					
					
						commit
						24c127178b
					
				
					 4 changed files with 53 additions and 2 deletions
				
			
		
							
								
								
									
										5
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							|  | @ -1365,6 +1365,11 @@ | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "mongoose-int32": { | ||||||
|  |       "version": "0.4.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/mongoose-int32/-/mongoose-int32-0.4.1.tgz", | ||||||
|  |       "integrity": "sha512-8ymH8hAmVDYxngNwI3Te9KnPGzlf0hI5wgRp3R8soAftuvSg4d/IZkHcSz9b84giPiiRhyvPgtasUiWqAWVQAQ==" | ||||||
|  |     }, | ||||||
|     "mongoose-legacy-pluralize": { |     "mongoose-legacy-pluralize": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "express": "^4.17.1", |     "express": "^4.17.1", | ||||||
|     "mongoose": "^5.10.2", |     "mongoose": "^5.10.2", | ||||||
|  |     "mongoose-int32": "^0.4.1", | ||||||
|     "typescript": "^4.0.2", |     "typescript": "^4.0.2", | ||||||
|     "winston": "^3.3.3" |     "winston": "^3.3.3" | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								src/index.ts
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/index.ts
									
										
									
									
									
								
							|  | @ -4,6 +4,7 @@ import * as fs from 'fs'; | ||||||
| import * as winston from 'winston'; | import * as winston from 'winston'; | ||||||
| 
 | 
 | ||||||
| import * as format from './lib/format'; | import * as format from './lib/format'; | ||||||
|  | import { File } from './schema'; | ||||||
| 
 | 
 | ||||||
| const config = JSON.parse(fs.readFileSync('./config/config.json', {encoding: 'utf8'})); | const config = JSON.parse(fs.readFileSync('./config/config.json', {encoding: 'utf8'})); | ||||||
| 
 | 
 | ||||||
|  | @ -48,10 +49,26 @@ db.then(() => { | ||||||
| 	app.set('config', config); | 	app.set('config', config); | ||||||
| 	app.set('logger', logger); | 	app.set('logger', logger); | ||||||
| 
 | 
 | ||||||
| 	app.get('/', (req, res) => { | 	app.get('/upload', (req, res) => { // only for testing, very abusable
 | ||||||
| 		res.send(`${config.name} homepage - unfinished`); | 		const file = new File({ | ||||||
|  | 			title: 'penis', // look how mature i am
 | ||||||
|  | 			artist: 'cock' | ||||||
|  | 		}); | ||||||
|  | 		file.save(); | ||||||
|  | 
 | ||||||
|  | 		res.send('made and saved a sample file'); | ||||||
| 	}); | 	}); | ||||||
| 
 | 
 | ||||||
|  | 	app.get('/list', async (req, res) => { // only for testing
 | ||||||
|  | 		const docs = await File.find({}); | ||||||
|  | 		res.send(JSON.stringify(docs)); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	app.get('/', (req, res) => { | ||||||
|  | 		res.send('wip'); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	 | ||||||
| 	app.get('*', (req, res) => { | 	app.get('*', (req, res) => { | ||||||
| 		res.status(404).send('404'); | 		res.status(404).send('404'); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								src/schema.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/schema.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | import * as mongoose from 'mongoose'; | ||||||
|  | 
 | ||||||
|  | const Schema = mongoose.Schema; | ||||||
|  | const Int32 = require('mongoose-int32'); | ||||||
|  |   | ||||||
|  | const Sample = new Schema({ | ||||||
|  | 	start: {type: Int32, default: new Int32(0)}, | ||||||
|  | 	length: {type: Int32, default: new Int32(0)} | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | const Chart = new Schema({ | ||||||
|  | 	name: {type: String, default: ''}, | ||||||
|  | 	rating: {type: Int32, default: new Int32(0)}, | ||||||
|  | 	type: {type: String, default: 'Challenge'} | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | const FileSchema = new Schema({ | ||||||
|  | 	title: {type: String, default: 'unknown'}, | ||||||
|  | 	artist: {type: String, default: 'unknown'}, | ||||||
|  | 	subtitle: String, | ||||||
|  | 	credit: String, | ||||||
|  | 	uploader: {type: String, default: '00000000-0000-4000-a000-000000000000'}, | ||||||
|  | 	sample: Sample, | ||||||
|  | 	bpms: {type: [Number], default: 0}, | ||||||
|  | 	charts: [Chart] | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | export const File = mongoose.model('File', FileSchema); | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue