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 cors from "cors";
|
||||||
import express from "express";
|
import express, { ErrorRequestHandler } from "express";
|
||||||
|
import { campaignsRouter } from "./routes/campaigns";
|
||||||
import { testRouter } from "./routes/test";
|
import { testRouter } from "./routes/test";
|
||||||
|
|
||||||
export const api = express();
|
export const api = express();
|
||||||
|
|
@ -10,3 +11,14 @@ api.use(express.json());
|
||||||
|
|
||||||
// Routes
|
// Routes
|
||||||
api.use("/test", testRouter);
|
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