add campaigns endpoints

This commit is contained in:
osmannyildiz 2024-05-18 15:49:12 +03:00
parent 7f411a004a
commit de04100c19
4 changed files with 76 additions and 1 deletions

View File

@ -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);
}
};

View File

@ -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);

View File

@ -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);

View File

@ -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);