adding common for new sort of backend and doing sort of proto way...hacky but okay for now

This commit is contained in:
talksik
2022-06-03 10:54:33 -07:00
parent 0d7839dd13
commit f8de994490
7 changed files with 113 additions and 4 deletions
+1 -1
View File
@@ -8,4 +8,4 @@
/build /build
/dist /dist
/packages/api/core /packages/api/common
+4 -3
View File
@@ -4,11 +4,11 @@
"main": "index.ts", "main": "index.ts",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"core": "cp -r ../core ./core", "common": "rm -rf ./common && cp -r ../common/src ./common/",
"dev": "NODE_ENV=development nodemon", "dev": "NODE_ENV=development && yarn common && nodemon",
"start:dev": "ts-node index.ts", "start:dev": "ts-node index.ts",
"start": "node dist/index.js", "start": "node dist/index.js",
"gcp-build": "yarn core & tsc -p .", "gcp-build": "npm run common && tsc -p .",
"production": "NODE_ENV=production nodemon" "production": "NODE_ENV=production nodemon"
}, },
"devDependencies": { "devDependencies": {
@@ -19,6 +19,7 @@
}, },
"dependencies": { "dependencies": {
"axios": "^0.26.1", "axios": "^0.26.1",
"firebase": "^9.8.2",
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^16.0.0", "dotenv": "^16.0.0",
"express": "^4.17.3", "express": "^4.17.3",
+6
View File
@@ -0,0 +1,6 @@
{
"name": "@nirvana/common",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
+3
View File
@@ -0,0 +1,3 @@
export const connectCore = () => {
console.log('CONNECTED COREEEE');
};
@@ -0,0 +1,35 @@
export interface IContent {
id: string;
creatorUserId: string;
contentUrl: string; // remote resource of file/media
createdDate: Date;
// visitCount
}
// ? persist length of clip for easier viewing for others...
// ?they have to load it anyway and will get metadata anyway?
export class ContentBlock implements IContent {
constructor(
public id: string,
public creatorUserId: string,
public contentUrl: string,
public contentType: ContentType,
public blobType: string,
public createdDate: Date,
) {}
}
export enum ContentType {
audio = 'audio',
link = 'link',
image = 'image',
}
export function isUrlImage(url: string) {
return url.match(/\.(jpeg|jpg|gif|png)$/) != null;
}
@@ -0,0 +1,48 @@
import { User } from './user.model';
export default class Conversation {
constructor(
public id: string,
public createdByUserId: string,
public memberIdsList: string[],
public members: MemberMap,
public userCache: User[],
public name: string | null = null,
public lastUpdatedDate: Date,
public createdDate: Date,
public membersInRoom: string[] = [],
) {}
}
export type MemberMap = {
[memberId: string]: ConversationMember;
};
export class ConversationMember {
constructor(
public userId: string, // NOTE: serves as the user ID
public role: MemberRole,
public memberState: MemberState,
public isActive: boolean = true,
public lastActiveDate: Date = null,
public joinedDate = Date,
) {}
}
export enum MemberRole {
admin = 'admin',
regular = 'regular',
}
export enum MemberState {
priority = 'priority',
inbox = 'inbox',
// deleted = "deleted"
}
+16
View File
@@ -0,0 +1,16 @@
export class User {
lastUpdatedDate?: Date;
priorityConversations?: string[]; // id of all priority convos
constructor(
public id: string,
public uid: string,
public providerId: string,
public email: string,
public displayName?: string,
public photoUrl?: string,
public phoneNumber?: string,
public createdDate: Date = new Date(),
) {}
}