hellojags / skapp-private

skapp - Skynet App
1 stars 0 forks source link

Implement SkappDAC #25

Open skynethubio opened 3 years ago

skynethubio commented 3 years ago

AppId must be generated by DAC.

DAC - exposed methods

skappAction(Action_Type,JSON Object) // JSON Object will be based on Action Type. Interface for each major action Type. Refer "skappActionType" for all action types.

getDeployedApps(appId[]) //Input value null or empty means get all deployed apps. IDeployedApp[] getPublishedApps(appId[]) //Input value null or empty means get all published apps. IPublishedApp[] getSkappsInfo(appId[]) // Input value null or empty means get All PublishedApps along with comments and stats object. ISkappInfo[] getSkappsStats(appId[]) getSkappsComments(appId)

TYPES (these are basic types, we will need to add Types for request and response for most actions)

// This is basically DataKey against which VALUE will be stored. VALUE content type is defined in below Interfaces - IDeployedApp, IPublishedApp, IAppComments, IAppStats

export interface IFilePaths { SKAPPS_DICT_PATH: string; {skapp_name:true/false} Example: {"skapp": true, "skyfeed":true, "SkySpaces":false}

PUBLISHED_INDEX_PATH: string; //${DATA_DOMAIN}/${skapp}/published/index.json Example: /skyapps.hns/skapp.hns/published/index.json /skyapps.hns/anotherAppStore.hns/published/index.json..etc PUBLISHED_APP_INFO_PATH: string;//${DATA_DOMAIN}/${skapp}/published/{appid}/appInfo.json PUBLISHED_APP_COMMENT_PATH: string;//${DATA_DOMAIN}/${skapp}/published/{appid}/comments.json PUBLISHED_APP_STATS_PATH: string;//${DATA_DOMAIN}/${skapp}/published/{appid}/stats.json DEPLOYED_INDEX_PATH: string;//${DATA_DOMAIN}/${skapp}/deployed/index.json DEPLOYED_APP_INFO_PATH: string;//${DATA_DOMAIN}/${skapp}/deployed/{appid}/appInfo.json }

export interface IIndex { version: number;

currPageNumber: number; currPageNumEntries: number;

pages: string[]; pageSize: number; }

export enum skappActionType { 'PUBLISH', 'REPUBLISH', 'DEPLOY', 'REDEPLOY', 'VIEWED', 'ACCESSED', 'FAVORITE', 'UNFAVORITE', 'LIKED', 'UNLIKED', 'ADD_COMMENT', 'EDIT_COMMENT' 'REMOVE_COMMENT' }

export interface ISkappInfo { "id": "SKAPP_ID", "version": "1", "content": { "publishedApp": IPublishedApp, "comments": IAppComments, "stats": IAppStats,// consolidated stats from all Skapps }, "ts": 1610328319 }

export interface IDeployedApp { "id": "SKAPP_ID", "version": "1", "prevSkylink":"", "content": { "storageGateway": "skynetportalUrl", "hns": "skyfeed", "skylink": "skylink", "defaultPath": "index.html or EMPTY", "portalMinVersion": "1.5", "sourceCode": "git url", "history": [ "list of skylinks" ] }, "ts": 1610328319 }

export interface IPublishedApp { "id": "SKAPP_ID", "version": "1", "prevSkylink":"", "content": { "skappLogo": "[46 Character SKYLINK]", "appname": "SkyFeed", "demoUrl": "[46 Character SKYLINK]", "age": "[18+|general]", "appUrl": "skylink URL", "defaultPath": "index.html or EMPTY", "sourceCode": "git url", "category": [ "list" ], "tags": [ "tag1", "tag2" ], "appStatus": [ "beta|alpha|live" ], "previewImages": { "aspectRatio": 0.5625, "images": [ { "thumbnail": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg", "image": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg" }, { "thumbnail": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg", "image": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg" }, { "thumbnail": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg", "image": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg" }, { "thumbnail": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg", "image": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg" } ] }, "previewVideo": { "thumbnail": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg", "mp4+1080x1920": "sia://PAF7C6slOWpgCM9CTjrtuwA51yBgsLMOARI86gaoadFoHg" }, "appDescription": "", "releaseNotes": "", "history": [ "list of skylinks" ], "supportDetails": "", "connections": { "twitter": "", "email": "", "discord": "" } }, "ts": 1610328319 }

export interface IAppComments { "id": "SKAPP_ID", "version": "1", "prevSkylink":"", "content": { "comments" : "[{timestamp : comment1},{timestamp : comment1}]" // list of comments }, "ts": 1610328319 }

export interface IAppStats { "id": "SKAPP_ID", "version": "1", "prevSkylink":"", "content": { "favorite" : 100, "viewed" : 100, // counter increments everytime card is clicked to view details "liked" : 500, "accessed" : 150, // counter increments everytime app URL is clicked }, "ts": 1610328319 }

skynethubio commented 3 years ago

SKAPPS_DICT_PATH: string; {skapp_name:true/false} JSON data: {"skapp.hns":{}, "skyfeed.hns":{}, "SkySpaces.hns": {}}

PUBLISHED_INDEX_PATH: string; //${DATA_DOMAIN}/${skapp}/published/index.json JSON Data: [appId1, AppId2....] PATH_Example: /skyapps.hns/skapp.hns/published/index.json, /skyapps.hns/anotherAppStore.hns/published/index.json..etc PUBLISHED_APP_INFO_PATH: string;//${DATA_DOMAIN}/${skapp}/published/{appid}/appInfo.json PUBLISHED_APP_COMMENT_PATH: string;//${DATA_DOMAIN}/${skapp}/published/{appid}/comments.json PUBLISHED_APP_STATS_PATH: string;//${DATA_DOMAIN}/${skapp}/published/{appid}/stats.json

DEPLOYED_INDEX_PATH: string;//${DATA_DOMAIN}/${skapp}/deployed/index.json JSON Data: [appId1, AppId2....] DEPLOYED_APP_INFO_PATH: string;//${DATA_DOMAIN}/${skapp}/deployed/{appid}/appInfo.json }

DAC getPublishedApps(appId[]) //Input value null or empty means get all published apps. IPublishedApp[] getSkappsInfo(appId[]) // Input value null or empty means get All PublishedApps along with comments and stats object. ISkappInfo[] getSkappsStats(appId[]) getSkappsComments(appId) getDeployedApps(appId[]) //Input value null or empty means get all deployed apps. IDeployedApp[]

Library skappAction(Action_Type,JSON Object)

export enum skappActionType { 'PUBLISH', 'REPUBLISH', 'DEPLOY', 'REDEPLOY', 'VIEWED', 'ACCESSED', 'FAVORITE', 'UNFAVORITE', 'LIKED', 'UNLIKED', 'ADD_COMMENT', 'EDIT_COMMENT' 'REMOVE_COMMENT' }