Setting up the model resolution design.

This commit is contained in:
Daniel Scalzi
2019-07-29 23:55:33 -04:00
parent 077fd12ec3
commit b942f4df59
10 changed files with 80 additions and 4 deletions

View File

@@ -7,7 +7,7 @@ export interface Distribution {
/**
* Global settings for Discord Rich Presence.
*/
discord: {
discord?: {
/**
* Client ID for the Application registered with Discord.
*/

View File

@@ -41,7 +41,7 @@ export interface Server {
/**
* Server specific settings used for Discord Rich Presence.
*/
discord: {
discord?: {
/**
* Short ID for the server. Displayed on the second status line as Server: shortId.
*/

View File

@@ -0,0 +1,25 @@
import { Distribution } from '../spec/distribution'
import { ModelStructure } from './model.struct'
import { ServerStructure } from './server.struct'
export class DistributionStructure implements ModelStructure<Distribution> {
private servers: ServerStructure[] | undefined
constructor(
private root: string
) {}
public getServers() {
return new ServerStructure(this.root).getSpecModel()
}
public getSpecModel(): Distribution {
return {
version: '1.0.0',
rss: 'TODO',
servers: this.getServers()
}
}
}

View File

@@ -0,0 +1,5 @@
export interface ModelStructure<T> {
getSpecModel(): T
}

View File

@@ -0,0 +1,25 @@
import { resolve } from 'path'
import { Server } from '../spec/server'
import { ModelStructure } from './model.struct'
export class ServerStructure implements ModelStructure<Server[]> {
private servers: Server[] | undefined
constructor(
private root: string
) {}
public getSpecModel(): Server[] {
if (this.servers == null) {
this.servers = this._doSeverRetrieval()
}
return this.servers
}
private _doSeverRetrieval(): Server[] {
const base = resolve(this.root, 'servers')
return [] // TODO
}
}