Route Configuration for Auto Public SEO

 avatar
unknown
javascript
2 months ago
2.0 kB
3
Indexable
const apsPrefix = '/auto-public-seo/';
const routesStructure = {
    Home: ``,
    apsDashboard: ``,
    apsSinglePost: `single`,
    apsSinglePostPublish: `single/publish`,
    apsGenerateImage: `generate/image`,
    apsGenerateText: `generate/text`,

    apsDomains: `domains`,
    apsDomainsEdit: `domains/edit`,
    apsDomainsStore: `domains/store`,
    apsDomainsDelete: `domains/delete`,
    apsDomainsGetCategoriesById: `domains/categories/{domainId}`,

    apsProjects: `projects`,
    apsProjectsEdit: `projects/edit/{id}`,
    apsProjectsGenerated: `projects/manage/{id}`,
    // apsProjectsCreate: `projects/create/{id}`,
    apsProjectsStore: `projects/store`,
    apsProjectGenerate: `projects/generate/{id}`,
    // apsProjectsUpdate: `projects/update/{id}`,
    apsProjectsDelete: `projects/delete/{id}`,

    apsRandomizeImage: `prompts/randomize-image`,
    apsGenerateArticle: `prompts/generate-article`,
    apsUpdatePrompt: `prompts/update`,
    apsPublishResult: `prompts/publish-result`,
    apsPromptsStore: `prompts/store`,
    apsPromptsDelete: `prompts/delete/{id}`,

    apsAttributes: `attributes`,
    apsAttributeStore: `attributes`,
    apsAttributeGetValues: `attributes/values/{id}`,
    apsAttributeValueDelete: `attributes/values/delete/{id}`,
    apsAttributeValueStore: `attributes/values`,
};

const routes = Object.keys(routesStructure).reduce((acc, routeName) => {
    let routePath = routesStructure[routeName];
    if (routeName.startsWith('aps')) {
        acc[routeName] = `${apsPrefix}${routePath ? routePath : ''}`;
    } else {
        acc[routeName] = routePath;
    }
    return acc;
}, {});

function route(name, params = {}) {
    if (!routes[name]) {
        console.warn(`Route "${name}" is not defined.`);
        return '/';
    }

    let url = routes[name];
    Object.keys(params).forEach(key => {
        url = url.replace(`{${key}}`, params[key]);
    });

    return url;
}

export default route;
Editor is loading...
Leave a Comment