forked from OneUptime/oneuptime
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request OneUptime#1817 from OneUptime/slack-app
Slack App
- Loading branch information
Showing
48 changed files
with
2,714 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
266 changes: 266 additions & 0 deletions
266
Common/Models/DatabaseModels/ServiceProviderProjectAuthToken.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,266 @@ | ||
import Project from "./Project"; | ||
import User from "./User"; | ||
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel"; | ||
import Route from "../../Types/API/Route"; | ||
import AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid"; | ||
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl"; | ||
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl"; | ||
import ColumnLength from "../../Types/Database/ColumnLength"; | ||
import ColumnType from "../../Types/Database/ColumnType"; | ||
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint"; | ||
import TableColumn from "../../Types/Database/TableColumn"; | ||
import TableColumnType from "../../Types/Database/TableColumnType"; | ||
import TableMetadata from "../../Types/Database/TableMetadata"; | ||
import TenantColumn from "../../Types/Database/TenantColumn"; | ||
import IconProp from "../../Types/Icon/IconProp"; | ||
import ObjectID from "../../Types/ObjectID"; | ||
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; | ||
import ServiceProviderType from "../../Types/ServiceProvider/ServiceProviderType"; | ||
|
||
export interface MiscData { | ||
[key: string]: string; | ||
} | ||
|
||
export interface SlackMiscData extends MiscData { | ||
teamId: string; | ||
teamName: string; | ||
botUserId: string; | ||
} | ||
|
||
@TenantColumn("projectId") | ||
@AllowAccessIfSubscriptionIsUnpaid() | ||
@TableAccessControl({ | ||
create: [], | ||
read: [], | ||
delete: [], | ||
update: [], | ||
}) | ||
@CrudApiEndpoint(new Route("/service-provider-project-auth-token")) | ||
@Entity({ | ||
name: "ServiceProviderProjectAuthToken", | ||
}) | ||
@TableMetadata({ | ||
tableName: "ServiceProviderProjectAuthToken", | ||
singularName: "Service Provider Project Auth Token", | ||
pluralName: "Service Provider Project Auth Tokens", | ||
icon: IconProp.Lock, | ||
tableDescription: "Third Party Auth Token for the Project", | ||
}) | ||
class ServiceProviderProjectAuthToken extends BaseModel { | ||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
manyToOneRelationColumn: "projectId", | ||
type: TableColumnType.Entity, | ||
modelType: Project, | ||
title: "Project", | ||
description: "Relation to Project Resource in which this object belongs", | ||
}) | ||
@ManyToOne( | ||
() => { | ||
return Project; | ||
}, | ||
{ | ||
eager: false, | ||
nullable: true, | ||
onDelete: "CASCADE", | ||
orphanedRowAction: "nullify", | ||
}, | ||
) | ||
@JoinColumn({ name: "projectId" }) | ||
public project?: Project = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@Index() | ||
@TableColumn({ | ||
type: TableColumnType.ObjectID, | ||
required: true, | ||
canReadOnRelationQuery: true, | ||
title: "Project ID", | ||
description: "ID of your OneUptime Project in which this object belongs", | ||
}) | ||
@Column({ | ||
type: ColumnType.ObjectID, | ||
nullable: false, | ||
transformer: ObjectID.getDatabaseTransformer(), | ||
}) | ||
public projectId?: ObjectID = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
title: "Auth Token", | ||
required: true, | ||
unique: false, | ||
type: TableColumnType.VeryLongText, | ||
canReadOnRelationQuery: true, | ||
}) | ||
@Column({ | ||
type: ColumnType.VeryLongText, | ||
unique: false, | ||
nullable: false, | ||
}) | ||
public authToken?: string = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
title: "Service Provider Type", | ||
description: "Type of Service Provider - slack, microsoft teams etc.", | ||
required: true, | ||
unique: false, | ||
type: TableColumnType.LongText, | ||
canReadOnRelationQuery: true, | ||
}) | ||
@Column({ | ||
type: ColumnType.LongText, | ||
length: ColumnLength.LongText, | ||
unique: false, | ||
nullable: false, | ||
}) | ||
public serviceProviderType?: ServiceProviderType = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
title: "Project ID in Service Provider", | ||
required: true, | ||
unique: false, | ||
type: TableColumnType.LongText, | ||
canReadOnRelationQuery: true, | ||
}) | ||
@Column({ | ||
type: ColumnType.LongText, | ||
length: ColumnLength.LongText, | ||
unique: false, | ||
nullable: false, | ||
}) | ||
public serviceProviderProjectId?: string = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
title: "Misc Data", | ||
required: true, | ||
unique: false, | ||
type: TableColumnType.JSON, | ||
canReadOnRelationQuery: true, | ||
}) | ||
@Column({ | ||
type: ColumnType.JSON, | ||
unique: false, | ||
nullable: false, | ||
}) | ||
public miscData?: MiscData = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
manyToOneRelationColumn: "createdByUserId", | ||
type: TableColumnType.Entity, | ||
modelType: User, | ||
title: "Created by User", | ||
description: | ||
"Relation to User who created this object (if this object was created by a User)", | ||
}) | ||
@ManyToOne( | ||
() => { | ||
return User; | ||
}, | ||
{ | ||
eager: false, | ||
nullable: true, | ||
onDelete: "SET NULL", | ||
orphanedRowAction: "nullify", | ||
}, | ||
) | ||
@JoinColumn({ name: "createdByUserId" }) | ||
public createdByUser?: User = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
type: TableColumnType.ObjectID, | ||
title: "Created by User ID", | ||
description: | ||
"User ID who created this object (if this object was created by a User)", | ||
}) | ||
@Column({ | ||
type: ColumnType.ObjectID, | ||
nullable: true, | ||
transformer: ObjectID.getDatabaseTransformer(), | ||
}) | ||
public createdByUserId?: ObjectID = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
manyToOneRelationColumn: "deletedByUserId", | ||
type: TableColumnType.Entity, | ||
title: "Deleted by User", | ||
description: | ||
"Relation to User who deleted this object (if this object was deleted by a User)", | ||
}) | ||
@ManyToOne( | ||
() => { | ||
return User; | ||
}, | ||
{ | ||
cascade: false, | ||
eager: false, | ||
nullable: true, | ||
onDelete: "SET NULL", | ||
orphanedRowAction: "nullify", | ||
}, | ||
) | ||
@JoinColumn({ name: "deletedByUserId" }) | ||
public deletedByUser?: User = undefined; | ||
|
||
@ColumnAccessControl({ | ||
create: [], | ||
read: [], | ||
update: [], | ||
}) | ||
@TableColumn({ | ||
type: TableColumnType.ObjectID, | ||
title: "Deleted by User ID", | ||
description: | ||
"User ID who deleted this object (if this object was deleted by a User)", | ||
}) | ||
@Column({ | ||
type: ColumnType.ObjectID, | ||
nullable: true, | ||
transformer: ObjectID.getDatabaseTransformer(), | ||
}) | ||
public deletedByUserId?: ObjectID = undefined; | ||
} | ||
|
||
export default ServiceProviderProjectAuthToken; |
Oops, something went wrong.