import express, {Express} from 'express';

const app: Express = express();

// Register the default middlewares
app.use(express.json());
app.use(require('../api/middlewares/error'));

/** All routes that don't require authentication */
app.use("/session", require('../api/routes/session'));

// Register the authentication middleware
app.use(require('../api/middlewares/authenticate').authenticate);

/** All routes that require authentication */
app.use("/links", require('../api/routes/links'));

/** Logs something with an api prefix */
const log = (msg: string) => console.log(`[API] ${msg}`);

/** Starts the api server */
export const startServer = (port: number = 8671) => app.listen(port, () => log(`Listening on port ${port}`));