Skip to content
This repository was archived by the owner on Aug 21, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Ethereal Engine. All Rights Reserved.
import React, { useEffect } from 'react'
import { useTranslation } from 'react-i18next'

import { BuildStatus } from '@etherealengine/common/src/interfaces/BuildStatus'
import { BuildStatusType } from '@etherealengine/engine/src/schemas/cluster/build-status.schema'
import { getMutableState, useHookstate } from '@etherealengine/hyperflux'
import Box from '@etherealengine/ui/src/primitives/mui/Box'
import Container from '@etherealengine/ui/src/primitives/mui/Container'
Expand All @@ -46,20 +46,22 @@ interface Props {
onClose: () => void
}

const defaultBuildStatus = {
id: 0,
const defaultBuildStatus: BuildStatusType = {
id: '',
commitSHA: '',
status: '',
dateStarted: '',
dateEnded: '',
logs: ''
logs: '',
createdAt: '',
updatedAt: ''
}

const BuildStatusDrawer = ({ open, onClose }: Props) => {
const { t } = useTranslation()
const page = useHookstate(0)
const rowsPerPage = useHookstate(10)
const selectedStatusId = useHookstate(0)
const selectedStatusId = useHookstate('')
const logsModalOpen = useHookstate(false)

const fieldOrder = useHookstate('desc')
Expand All @@ -68,7 +70,7 @@ const BuildStatusDrawer = ({ open, onClose }: Props) => {
const buildStatusState = useHookstate(getMutableState(AdminBuildStatusState))
const buildStatuses = buildStatusState.buildStatuses.value

const handleOpenLogsModal = (buildStatus: BuildStatus) => {
const handleOpenLogsModal = (buildStatus: BuildStatusType) => {
selectedStatusId.set(buildStatus.id)
logsModalOpen.set(true)
}
Expand All @@ -79,9 +81,9 @@ const BuildStatusDrawer = ({ open, onClose }: Props) => {

const handleCloseLogsModal = () => {
logsModalOpen.set(false)
selectedStatusId.set(0)
selectedStatusId.set('')
}
const createData = (el: BuildStatus) => {
const createData = (el: BuildStatusType) => {
return {
el,
id: (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Ethereal Engine. All Rights Reserved.
import classNames from 'classnames'
import React from 'react'

import { BuildStatus } from '@etherealengine/common/src/interfaces/BuildStatus'
import { BuildStatusType } from '@etherealengine/engine/src/schemas/cluster/build-status.schema'
import Fade from '@etherealengine/ui/src/primitives/mui/Fade'
import Icon from '@etherealengine/ui/src/primitives/mui/Icon'
import IconButton from '@etherealengine/ui/src/primitives/mui/IconButton'
Expand All @@ -37,7 +37,7 @@ import styles from '../../styles/admin.module.scss'
interface Props {
open: boolean
onClose: () => void
buildStatus: BuildStatus
buildStatus: BuildStatusType
}

const BuildStatusLogsModal = ({ open, onClose, buildStatus }: Props) => {
Expand Down
13 changes: 6 additions & 7 deletions packages/client-core/src/admin/services/BuildStatusService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,8 @@ Ethereal Engine. All Rights Reserved.

import { Paginated } from '@feathersjs/feathers'

import { BuildStatus } from '@etherealengine/common/src/interfaces/BuildStatus'
import { BuildStatusResult } from '@etherealengine/common/src/interfaces/BuildStatusResult'
import { matches, Validator } from '@etherealengine/engine/src/common/functions/MatchesUtils'
import { buildStatusPath, BuildStatusType } from '@etherealengine/engine/src/schemas/cluster/build-status.schema'
import { defineAction, defineState, dispatchAction, getMutableState } from '@etherealengine/hyperflux'

import { API } from '../../API'
Expand All @@ -37,7 +36,7 @@ import { NotificationService } from '../../common/services/NotificationService'
export const AdminBuildStatusState = defineState({
name: 'AdminBuildStatusState',
initial: () => ({
buildStatuses: [] as Array<BuildStatus>,
buildStatuses: [] as Array<BuildStatusType>,
skip: 0,
limit: 10,
total: 0,
Expand Down Expand Up @@ -69,15 +68,15 @@ export const AdminBuildStatusReceptors = {
//Service
export const BuildStatusService = {
fetchBuildStatus: async (skip = 0) => {
let buildStatusResult = (await API.instance.client.service('build-status').find({
let buildStatusResult = await API.instance.client.service(buildStatusPath).find({
query: {
$limit: 10,
$skip: skip,
$sort: {
id: 'desc'
id: -1
}
}
})) as BuildStatusResult
})

dispatchAction(
AdminBuildStatusActions.fetchBuildStatusRetrieved({
Expand All @@ -94,7 +93,7 @@ export const BuildStatusService = {
export class AdminBuildStatusActions {
static fetchBuildStatusRetrieved = defineAction({
type: 'ee.client.AdminBuildStatus.FETCH_BUILD_STATUS_RETRIEVED' as const,
data: matches.array as Validator<unknown, BuildStatus[]>,
data: matches.array as Validator<unknown, BuildStatusType[]>,
total: matches.number,
limit: matches.number,
skip: matches.number
Expand Down
33 changes: 0 additions & 33 deletions packages/common/src/interfaces/BuildStatus.ts

This file was deleted.

85 changes: 85 additions & 0 deletions packages/engine/src/schemas/cluster/build-status.schema.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/*
CPAL-1.0 License

The contents of this file are subject to the Common Public Attribution License
Version 1.0. (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://github.com/EtherealEngine/etherealengine/blob/dev/LICENSE.
The License is based on the Mozilla Public License Version 1.1, but Sections 14
and 15 have been added to cover use of software over a computer network and
provide for limited attribution for the Original Developer. In addition,
Exhibit A has been modified to be consistent with Exhibit B.

Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
specific language governing rights and limitations under the License.

The Original Code is Ethereal Engine.

The Original Developer is the Initial Developer. The Initial Developer of the
Original Code is the Ethereal Engine team.

All portions of the code written by the Ethereal Engine team are Copyright © 2021-2023
Ethereal Engine. All Rights Reserved.
*/

// // For more information about this file see https://dove.feathersjs.com/guides/cli/service.schemas.html
import { querySyntax, Type } from '@feathersjs/typebox'
import type { Static } from '@feathersjs/typebox'

export const buildStatusPath = 'build-status'

export const buildStatusMethods = ['find', 'get', 'create', 'patch', 'remove'] as const

// Main data model schema
export const buildStatusSchema = Type.Object(
{
id: Type.String({
format: 'uuid'
}),
status: Type.String(),
dateStarted: Type.String(),
dateEnded: Type.String(),
logs: Type.String(),
commitSHA: Type.String(),
createdAt: Type.String({ format: 'date-time' }),
updatedAt: Type.String({ format: 'date-time' })
},
{ $id: 'BuildStatus', additionalProperties: false }
)
export type BuildStatusType = Static<typeof buildStatusSchema>

// Schema for creating new entries
export const buildStatusDataSchema = Type.Pick(
buildStatusSchema,
['status', 'dateStarted', 'dateEnded', 'logs', 'commitSHA'],
{
$id: 'BuildStatusData'
}
)
export type BuildStatusData = Static<typeof buildStatusDataSchema>

// Schema for updating existing entries
export const buildStatusPatchSchema = Type.Partial(buildStatusSchema, {
$id: 'BuildStatusPatch'
})
export type BuildStatusPatch = Static<typeof buildStatusPatchSchema>

// Schema for allowed query properties
export const buildStatusQueryProperties = Type.Pick(buildStatusSchema, [
'id',
'status',
'dateStarted',
'dateEnded',
'logs',
'commitSHA'
])
export const buildStatusQuerySchema = Type.Intersect(
[
querySyntax(buildStatusQueryProperties),
// Add additional query properties here
Type.Object({}, { additionalProperties: false })
],
{ additionalProperties: false }
)
export type BuildStatusQuery = Static<typeof buildStatusQuerySchema>
32 changes: 18 additions & 14 deletions packages/server-core/src/cluster/build-status/build-status.class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,21 @@ All portions of the code written by the Ethereal Engine team are Copyright © 20
Ethereal Engine. All Rights Reserved.
*/

import { Paginated, Params } from '@feathersjs/feathers'
import { SequelizeServiceOptions, Service } from 'feathers-sequelize'

import { BuildStatus as BuildStatusInterface } from '@etherealengine/common/src/interfaces/BuildStatus'

import { Application } from '../../../declarations'

export class BuildStatus<T = BuildStatusInterface> extends Service<T> {
app: Application

constructor(options: Partial<SequelizeServiceOptions>, app: Application) {
super(options)
}
}
import type { Params } from '@feathersjs/feathers'
import { KnexService } from '@feathersjs/knex'
import type { KnexAdapterParams } from '@feathersjs/knex'

import {
BuildStatusData,
BuildStatusPatch,
BuildStatusQuery,
BuildStatusType
} from '@etherealengine/engine/src/schemas/cluster/build-status.schema'

// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface BuildStatusParams extends KnexAdapterParams<BuildStatusQuery> {}

export class BuildStatusService<
T = BuildStatusType,
ServiceParams extends Params = BuildStatusParams
> extends KnexService<BuildStatusType, BuildStatusData, BuildStatusParams, BuildStatusPatch> {}
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,24 @@ All portions of the code written by the Ethereal Engine team are Copyright © 20
Ethereal Engine. All Rights Reserved.
*/

import { BuildStatus } from './BuildStatus'

export interface BuildStatusResult {
data: BuildStatus[]
total: number
limit: number
skip: number
}
import { createSwaggerServiceOptions } from 'feathers-swagger'

import {
buildStatusDataSchema,
buildStatusPatchSchema,
buildStatusQuerySchema,
buildStatusSchema
} from '@etherealengine/engine/src/schemas/cluster/build-status.schema'

export default createSwaggerServiceOptions({
schemas: {
buildStatusDataSchema,
buildStatusPatchSchema,
buildStatusQuerySchema,
buildStatusSchema
},
docs: {
description: 'Build status service description',
securities: ['all']
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,57 @@ All portions of the code written by the Ethereal Engine team are Copyright © 20
Ethereal Engine. All Rights Reserved.
*/

import { hooks as schemaHooks } from '@feathersjs/schema'
import { getValidator } from '@feathersjs/typebox'
import { iff, isProvider } from 'feathers-hooks-common'

import {
buildStatusDataSchema,
buildStatusPatchSchema,
buildStatusQuerySchema,
buildStatusSchema
} from '@etherealengine/engine/src/schemas/cluster/build-status.schema'
import { dataValidator, queryValidator } from '@etherealengine/server-core/validators'

import authenticate from '../../hooks/authenticate'
import verifyScope from '../../hooks/verify-scope'
import {
buildStatusDataResolver,
buildStatusExternalResolver,
buildStatusPatchResolver,
buildStatusQueryResolver,
buildStatusResolver
} from './build-status.resolvers'

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const buildStatusValidator = getValidator(buildStatusSchema, dataValidator)
const buildStatusDataValidator = getValidator(buildStatusDataSchema, dataValidator)
const buildStatusPatchValidator = getValidator(buildStatusPatchSchema, dataValidator)
const buildStatusQueryValidator = getValidator(buildStatusQuerySchema, queryValidator)

export default {
around: {
all: [schemaHooks.resolveExternal(buildStatusExternalResolver), schemaHooks.resolveResult(buildStatusResolver)]
},

before: {
all: [authenticate(), iff(isProvider('external'), verifyScope('admin', 'admin') as any)],
all: [
authenticate(),
iff(isProvider('external'), verifyScope('admin', 'admin')),
() => schemaHooks.validateQuery(buildStatusQueryValidator),
schemaHooks.resolveQuery(buildStatusQueryResolver)
],
find: [],
get: [],
create: [],
create: [
() => schemaHooks.validateData(buildStatusDataValidator),
schemaHooks.resolveData(buildStatusDataResolver)
],
update: [],
patch: [],
patch: [
() => schemaHooks.validateData(buildStatusPatchValidator),
schemaHooks.resolveData(buildStatusPatchResolver)
],
remove: []
},

Expand Down
Loading