3
0
corteza/server/system/template.cue
Vivek Patel 1699e3f94b Remove handle requirement from resource API
We removed handle requirement for all resource like namespace(slug), module, user, page, chart.

Due to that namespace import/export was broken as we were using handle as reference, hence fixed it by replacing handle usage with ID of resource.

It also fixes index of template table for handle column.
2022-11-24 10:28:22 +02:00

109 lines
2.3 KiB
CUE

package system
import (
"github.com/cortezaproject/corteza/server/codegen/schema"
)
template: {
model: {
// length for the lang is now a bit shorter
// Reason for that is supported index length in MySQL
attributes: {
id: schema.IdField
owner_id: {
storeIdent: "rel_owner",
ident: "ownerID"
schema.AttributeUserRef,
}
handle: schema.HandleField
language: {
sortable: true,
goType: "string"
dal: { length: 32 }
}
type: {
sortable: true,
goType: "types.DocumentType"
dal: {}
}
partial: {
goType: "bool"
dal: { type: "Boolean" }
}
meta: {
goType: "types.TemplateMeta"
dal: { type: "JSON", defaultEmptyObject: true }
}
template: {
sortable: true,
goType: "string"
dal: {}
}
created_at: schema.SortableTimestampNowField
updated_at: schema.SortableTimestampNilField
deleted_at: schema.SortableTimestampNilField
last_used_at: schema.SortableTimestampNilField
}
indexes: {
"primary": { attribute: "id" }
"unique_language_handle": {
fields: [
{ attribute: "language" },
{ attribute: "handle", modifier: [ "LOWERCASE" ] }
]
predicate: "handle != '' AND deleted_at IS NULL"
}
}
}
filter: {
struct: {
template_id: {goType: "[]uint64", ident: "templateID", storeIdent: "id"}
handle: {goType: "string"}
type: {goType: "string"}
owner_id: {goType: "uint64", storeIdent: "rel_owner", ident: "ownerID" }
partial: {goType: "bool"}
deleted: {goType: "filter.State", storeIdent: "deleted_at"}
}
query: ["handle", "type"]
byValue: ["template_id", "handle", "partial", "type", "owner_id"]
byNilState: ["deleted"]
}
rbac: {
operations: {
read: description: "Read template"
update: description: "Update template"
delete: description: "Delete template"
render: description: "Render template"
}
}
store: {
api: {
lookups: [
{
fields: ["id"]
description: """
searches for template by ID
It also returns deleted templates.
"""
}, {
fields: ["handle"]
nullConstraint: ["deleted_at"]
constraintCheck: true
description: """
searches for template by handle
It returns only valid templates (not deleted)
"""
},
]
}
}
}