Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Type, Static, TBase } from 'typebox'
- // ------------------------------------------
- // Some Decorator Crap
- // ------------------------------------------
- export function Controller(path, request) {
- return (constructor) => {
- // todo:
- }
- }
- export function Route(path: string, request) {
- return (prototype, method, descriptor) => {
- // todo:
- }
- }
- export function Define(name) {
- return () => {
- // todo:
- }
- }
- export function Inject(name) {
- return () => {
- // todo:
- }
- }
- // ------------------------------------------
- // Operational Contract
- // ------------------------------------------
- const CreateUserRequest = Type.Object({
- name: Type.String(),
- email: Type.Number()
- })
- const CreateUserResponse = Type.Object({
- name: Type.String(),
- email: Type.Number()
- })
- // ------------------------------------------
- // Dependency to be injected
- // ------------------------------------------
- export class IRepository {}
- @Define("Repository") export class Repository {}
- export class ApiController {}
- // ------------------------------------------
- // Some Controller thing
- // ------------------------------------------
- @Controller('/api/users', {
- comment: 'Manages users.'
- })
- export class App extends ApiController {
- constructor(@Inject("Repository") repository) {
- super()
- }
- @Route('/create-user', {
- comment: 'Creates a new user.',
- requestType: CreateUserRequest,
- responseType: CreateUserResponse,
- middleware: []
- })
- async createUser(request) {
- return request
- }
- }
- export class Host {
- mount(controller) {
- // todo:
- }
- listen(port) {
- // todo:
- }
- }
- const host = new Host()
- host.mount(App)
- host.listen(5000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement