Skip to content
Snippets Groups Projects
Commit 8d48220f authored by Mamadu-lamarana Bah's avatar Mamadu-lamarana Bah :speech_balloon:
Browse files

model schema

parent 4f7635f7
No related branches found
No related tags found
No related merge requests found
Showing
with 463 additions and 0 deletions
{
"description" : "finir les TP de jsfs",
"urgency" : 5
}
{
"description" : "acheter du pain",
"urgency" : 1
}
{
"description" : "prendre un café",
"urgency" : 3
}
const displayMessage = msg => document.getElementById('content').textContent = msg;
const setup = () => {
displayMessage('prêt');
}
// go !
setup();
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
#content , #list {
margin : 10px;
padding : 4px;
border : solid thin #999;
}
#content {
overflow : hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
#createTask {
margin : auto;
}
#urgency {
width : 50px;
text-align : right;
}
#list div.task {
padding : 2px;
margin : 1px 2px;
}
div.task:nth-of-type(even) {
background-color: #EEE;
}
button.delete {
color : red;
margin-left : 10px;
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="UTF-8"/>
<title>TODO app</title>
<link href="/stylesheets/todo.css" rel="stylesheet" type="text/css"/>
<script src="/javascripts/todo.js" defer></script>
</head>
<body>
<h1>TODO page</h1>
<div id="content">
</div>
<div id="createTask">
<input id="desc" type="text" placeholder="description"/>
<input id="urgency" type="number" min="1" max="5" value="3" />
<button id="create">Crée tâche</button>
</div>
<div id="list">
</div>
</body>
</html>
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
const jsonRouter = require('./routes/jsonRouter');
// define middlewares managing unknown routes
const error = require('./middlewares/error.middleware');
// mongoDb
const dbConnection = require('./controllers/db.controller.js');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/json', jsonRouter);
//app.use('/mongodb://username:password@host:port/tasksBase', mongoRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(error);
module.exports = app;
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('express:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
const DB_HOST = '127.0.0.1';
const DB_PORT = 27017;
const DB_NAME = 'booksBase';
const DB_URI = `mongodb://${DB_HOST}:${DB_PORT}/${DB_NAME}`
module.exports = {
DB_HOST : DB_HOST,
DB_PORT : DB_PORT,
DB_NAME : DB_NAME,
DB_URI : DB_URI
}
\ No newline at end of file
const mongoose = require('mongoose');
const dbURI = require('../config/db.config').DB_URI;
const dbConnection = mongoose.createConnection(dbURI);
module.exports = dbConnection; // exporte la connection créée
// mise en place des abonnements aux événéments
dbConnection.on('connected',
() => console.log(`db.controller.js : connected to ${dbURI}`)
);
dbConnection.on('disconnected',
() => console.log(`dn.controller.js : disconnected from ${dbURI}`));
// dbConnection.on('error', ... );
const shutdown = async msg => { // fonction pour
await dbConnection.close(); // fermer proprement la connexion
console.log(` Mongoose shutdown : ${msg}`);
process.exit(0);
}
// code pour gérer proprement le Ctrl+C sous windows et la réception de 'SIGINT'
// nécessite d'installer le module readline : 'npm install readline --save'
// (...)
process.on('SIGINT', () => shutdown('application ends') ); // application killed (Ctrl+c)
process.on('SIGTERM', () => shutdown('SIGTERM received') ); // process killed (POSIX)
\ No newline at end of file
const createError = require('http-errors');
const url = require('url');
// catch 404 and forward to error handler
const notFound =
(req, res, next) => {
next(createError(404));
};
// error handler
const handleError =
(err, req, res, next) => {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error', { error : err, url : req.url } );
};
module.exports.notFound = notFound;
module.exports.handleError = handleError;
const path = require('path');
module.exports.home =
(req, res) => {
res.render('index', { title: 'Express' });
}
module.exports.first =
(_,res) => {
const options = {
root : 'html',
headers: {
'Content-Type': 'text/html',
'x-timestamp': Date.now(),
'x-sent': true
}
};
res.sendFile('first.html', options);
}
module.exports.second =
(_,res) => {
const options = {
root : 'html',
headers: {
'Content-Type': 'text/html',
'x-timestamp': Date.now(),
'x-sent': true
}
};
res.sendFile('second.html', options);
}
module.exports.todo =
(_,res) => {
const options = {
root : 'public',
headers: {
'Content-Type': 'text/html',
'x-timestamp': Date.now(),
'x-sent': true
}
};
res.sendFile('todo.html', options);
}
class jsonController {
constructor() {
this.random = this.random.bind(this);
this.home = this.home.bind(this);
}
getCurrentDate() {
const date = new Date();
const d = date.toISOString();
return d;
}
random(_, res) {
const params = {};
params.randomValue = Math.floor(Math.random()*101);
res.status(200).json(params);
}
home(req, res) {
const params = {};
if(Object.keys(req.query).length !== 0) {
for (const param of Object.keys(req.query)) {
params[param] = req.query[param];
}
}
params.date = this.getCurrentDate();
res.status(200).json(params);
}
}
// export controller object. Could be defined as a singleton.
module.exports = new jsonController();
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="UTF-8"/>
<title>FIRST</title>
<link href="/stylesheets/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>First page</h1>
<p>
delivered by express
</p>
</body>
</html>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="UTF-8"/>
<title>SECOND</title>
<link href="/stylesheets/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>Second page</h1>
<p>
delivered by express
</p>
<p>
<img src="/images/timoleon_oceanie.jpg" alt="timoleon océanie" />
</p>
</body>
</html>
const express = require('express');
const router = express.Router();
const errorController = require('../controllers/error.controller');
// catch 404 and forward to error handler
router.use(errorController.notFound);
// error handler
router.use(errorController.handleError);
module.exports = router;
{
"description" : "finir les TP de jsfs",
"urgency" : 5
}
{
"description" : "acheter du pain",
"urgency" : 1
}
{
"description" : "prendre un café",
"urgency" : 3
}
const mongoose = require('mongoose');
const schemaModel = new mongoose.Schema({
description : { type : String, unique :true, required : true},
urgency : {
type : Number,
min : 1,
max : 5,
default : 3,
set : v => {
if (v < 1) { return 1};
if(v > 5) {return 5};
}
}
});
const dbConnection = require('../controllers/db.controller'); // importation de l'objet qui gère la connexion
const schema = dbConnection.model('')
module.exports = schemaModel;
\ No newline at end of file
WiredTiger
WiredTiger 10.0.2: (November 30, 2021)
WiredTiger lock file
WiredTiger version string
WiredTiger 10.0.2: (November 30, 2021)
WiredTiger version
major=10,minor=0,patch=2
file:WiredTiger.wt
access_pattern_hint=none,allocation_size=4KB,app_metadata=,assert=(commit_timestamp=none,durable_timestamp=none,read_timestamp=none,write_timestamp=off),block_allocation=best,block_compressor=,cache_resident=false,checksum=on,collator=,columns=,dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key=,huffman_value=,id=0,ignore_in_memory_cache_size=false,internal_item_max=0,internal_key_max=0,internal_key_truncate=true,internal_page_max=4KB,key_format=S,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,leaf_value_max=0,log=(enabled=true),memory_page_image_max=0,memory_page_max=5MB,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=false,prefix_compression_min=4,readonly=false,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,tiered_object=false,tiered_storage=(auth_token=,bucket=,bucket_prefix=,cache_directory=,local_retention=300,name=,object_target_size=10M),value_format=S,verbose=[],version=(major=1,minor=1),write_timestamp_usage=none,checkpoint=(WiredTigerCheckpoint.72=(addr="018881e4707762e58981e41cac82458a81e4c2a4ac29808080e3011fc0e24fc0",order=72,time=1709830655,size=32768,newest_start_durable_ts=0,oldest_start_ts=0,newest_txn=212,newest_stop_durable_ts=0,newest_stop_ts=-1,newest_stop_txn=-11,prepare=0,write_gen=215,run_write_gen=1)),checkpoint_backup_info=,checkpoint_lsn=(1,124928)
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment