add campaigns endpoints
This commit is contained in:
parent
7f411a004a
commit
de04100c19
|
|
@ -0,0 +1,37 @@
|
|||
import { RequestHandler } from "express";
|
||||
import { Campaign } from "../../db/campaign";
|
||||
|
||||
export const getMany: RequestHandler = async (req, res, next) => {
|
||||
try {
|
||||
const campaigns = await Campaign.find();
|
||||
|
||||
return res.json({
|
||||
ok: true,
|
||||
data: campaigns,
|
||||
});
|
||||
} catch (error) {
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
export const create: RequestHandler = async (req, res, next) => {
|
||||
try {
|
||||
const { name, contractAddress } = req.body;
|
||||
if (!name || !contractAddress) {
|
||||
throw new Error("Missing field(s).");
|
||||
}
|
||||
|
||||
const campaign = new Campaign({
|
||||
name: req.body.name,
|
||||
contractAddress: req.body.contractAddress,
|
||||
});
|
||||
await campaign.save();
|
||||
|
||||
return res.json({
|
||||
ok: true,
|
||||
data: campaign,
|
||||
});
|
||||
} catch (error) {
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
import cors from "cors";
|
||||
import express from "express";
|
||||
import express, { ErrorRequestHandler } from "express";
|
||||
import { campaignsRouter } from "./routes/campaigns";
|
||||
import { testRouter } from "./routes/test";
|
||||
|
||||
export const api = express();
|
||||
|
|
@ -10,3 +11,14 @@ api.use(express.json());
|
|||
|
||||
// Routes
|
||||
api.use("/test", testRouter);
|
||||
api.use("/campaigns", campaignsRouter);
|
||||
|
||||
// Error Handler
|
||||
const errorHandler: ErrorRequestHandler = (error, req, res, next) => {
|
||||
console.error(error);
|
||||
return res.json({
|
||||
ok: false,
|
||||
error: error.message || "Something went wrong.",
|
||||
});
|
||||
};
|
||||
api.use(errorHandler);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
import express from "express";
|
||||
import * as controllers from "../controllers/campaigns";
|
||||
|
||||
export const campaignsRouter = express.Router();
|
||||
|
||||
campaignsRouter.route("/").get(controllers.getMany);
|
||||
campaignsRouter.route("/").post(controllers.create);
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
import mongoose from "mongoose";
|
||||
|
||||
interface ICampaign {
|
||||
name: string;
|
||||
contractAddress: string;
|
||||
}
|
||||
|
||||
const campaignSchema = new mongoose.Schema<ICampaign>({
|
||||
name: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
contractAddress: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
|
||||
export const Campaign = mongoose.model<ICampaign>("Campaign", campaignSchema);
|
||||
Loading…
Reference in New Issue