fix: missing fields (#4083)

* fix: missing fields

* fix: typo

* chore: add migration

---------

Co-authored-by: xilesun <2013xile@gmail.com>
This commit is contained in:
chenos 2024-04-18 09:53:44 +05:30 committed by GitHub
parent a3795c2ec3
commit 651af7d741
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 173 additions and 1 deletions

View File

@ -97,5 +97,35 @@ export default defineCollection({
name: 'systemSettings',
defaultValue: {},
},
{
uiSchema: {
'x-component-props': {
dateFormat: 'YYYY-MM-DD',
},
type: 'datetime',
title: '{{t("Created at")}}',
'x-component': 'DatePicker',
'x-read-pretty': true,
},
name: 'createdAt',
type: 'date',
field: 'createdAt',
interface: 'createdAt',
},
{
uiSchema: {
'x-component-props': {
dateFormat: 'YYYY-MM-DD',
},
type: 'datetime',
title: '{{t("Last updated at")}}',
'x-component': 'DatePicker',
'x-read-pretty': true,
},
name: 'updatedAt',
type: 'date',
field: 'updatedAt',
interface: 'updatedAt',
},
],
});

View File

@ -0,0 +1,116 @@
import { Migration } from '@nocobase/server';
export default class extends Migration {
on = 'afterLoad'; // 'beforeLoad' or 'afterLoad'
appVersion = '<0.21.0-alpha.11';
async up() {
const Field = this.context.db.getRepository('fields');
const createdByField = await Field.findOne({
filter: {
name: 'createdBy',
collectionName: 'users',
interface: null,
},
});
if (createdByField) {
await createdByField.update({
interface: 'createdBy',
options: {
...createdByField.options,
uiSchema: {
type: 'object',
title: '{{t("Created by")}}',
'x-component': 'AssociationField',
'x-component-props': {
fieldNames: {
value: 'id',
label: 'nickname',
},
},
'x-read-pretty': true,
},
},
});
}
const updatedByField = await Field.findOne({
filter: {
name: 'updatedBy',
collectionName: 'users',
interface: null,
},
});
if (updatedByField) {
await updatedByField.update({
interface: 'updatedBy',
options: {
...updatedByField.options,
uiSchema: {
type: 'object',
title: '{{t("Last updated by")}}',
'x-component': 'AssociationField',
'x-component-props': {
fieldNames: {
value: 'id',
label: 'nickname',
},
},
'x-read-pretty': true,
},
},
});
}
const createdAtField = await Field.count({
filter: {
name: 'createdAt',
collectionName: 'users',
},
});
if (!createdAtField) {
await Field.create({
values: {
collectionName: 'users',
uiSchema: {
'x-component-props': {
dateFormat: 'YYYY-MM-DD',
},
type: 'datetime',
title: '{{t("Created at")}}',
'x-component': 'DatePicker',
'x-read-pretty': true,
},
name: 'createdAt',
field: 'createdAt',
type: 'date',
interface: 'createdAt',
},
});
}
const updatedAtField = await Field.count({
filter: {
name: 'updatedAt',
collectionName: 'users',
},
});
if (!updatedAtField) {
await Field.create({
values: {
collectionName: 'users',
uiSchema: {
'x-component-props': {
dateFormat: 'YYYY-MM-DD',
},
type: 'datetime',
title: '{{t("Last updated at")}}',
'x-component': 'DatePicker',
'x-read-pretty': true,
},
name: 'updatedAt',
field: 'updatedAt',
type: 'date',
interface: 'updatedAt',
},
});
}
}
}

View File

@ -3,8 +3,8 @@ import { Plugin } from '@nocobase/server';
import { parse } from '@nocobase/utils';
import { resolve } from 'path';
import * as actions from './actions/users';
import { Cache } from '@nocobase/cache';
import * as actions from './actions/users';
import { UserModel } from './models/UserModel';
export default class PluginUsersServer extends Plugin {
@ -70,6 +70,19 @@ export default class PluginUsersServer extends Plugin {
target: 'users',
foreignKey: 'createdById',
targetKey: 'id',
uiSchema: {
type: 'object',
title: '{{t("Created by")}}',
'x-component': 'AssociationField',
'x-component-props': {
fieldNames: {
value: 'id',
label: 'nickname',
},
},
'x-read-pretty': true,
},
interface: 'createdBy',
});
}
if (updatedBy === true) {
@ -85,6 +98,19 @@ export default class PluginUsersServer extends Plugin {
target: 'users',
foreignKey: 'updatedById',
targetKey: 'id',
uiSchema: {
type: 'object',
title: '{{t("Last updated by")}}',
'x-component': 'AssociationField',
'x-component-props': {
fieldNames: {
value: 'id',
label: 'nickname',
},
},
'x-read-pretty': true,
},
interface: 'updatedBy',
});
}
});