SOGOMS v1.0.3 - Admin UI, Cron, Config reload
Phase 13 : sogoms-cron
- Jobs planifiés avec schedule cron standard
- Types: query_email, http, service
- Actions: list, trigger, status
Phase 16 : Réorganisation config/apps/{app}/
- Tous les fichiers d'une app dans un seul dossier
- Migration prokov vers nouvelle structure
Phase 17 : sogoms-admin
- Interface web d'administration (Go templates + htmx)
- Auth sessions cookies signées HMAC-SHA256
- Rôles super_admin / app_admin avec permissions
Phase 19 : Création d'app via Admin UI
- Formulaire création app avec config DB/auth
- Bouton "Scanner la base" : introspection + schema.yaml
- Rechargement automatique sogoway via SIGHUP
Infrastructure :
- sogoctl : socket de contrôle /run/sogoctl.sock
- sogoway : reload config sur SIGHUP sans restart
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
25
config/apps/prokov/queries/auth.yaml
Normal file
25
config/apps/prokov/queries/auth.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
# Requêtes d'authentification
|
||||
|
||||
# Données chargées après login réussi
|
||||
login_data:
|
||||
projects: >
|
||||
SELECT id, parent_id, name, description, position, created_at, updated_at
|
||||
FROM projects WHERE user_id = ? ORDER BY position
|
||||
tasks: >
|
||||
SELECT id, project_id, status_id, title, description, priority,
|
||||
date_start, date_end, time_estimated, time_spent, billing, position,
|
||||
created_at, updated_at
|
||||
FROM tasks WHERE user_id = ? ORDER BY position
|
||||
tags: >
|
||||
SELECT id, name, color, created_at
|
||||
FROM tags WHERE user_id = ?
|
||||
statuses: >
|
||||
SELECT id, project_id, code, name, color, position, created_at
|
||||
FROM statuses WHERE user_id = ? ORDER BY code
|
||||
|
||||
# Requêtes unitaires
|
||||
user_by_email: >
|
||||
SELECT id, email, name, password FROM users WHERE email = ?
|
||||
|
||||
user_by_id: >
|
||||
SELECT id, email, name, created_at FROM users WHERE id = ?
|
||||
44
config/apps/prokov/queries/projects.yaml
Normal file
44
config/apps/prokov/queries/projects.yaml
Normal file
@@ -0,0 +1,44 @@
|
||||
# Requêtes CRUD projects
|
||||
|
||||
list:
|
||||
query: >
|
||||
SELECT id, parent_id, name, description, position, created_at, updated_at
|
||||
FROM projects
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
order: "position ASC"
|
||||
|
||||
show:
|
||||
query: >
|
||||
SELECT id, parent_id, name, description, position, created_at, updated_at
|
||||
FROM projects WHERE id = :id
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
create:
|
||||
table: projects
|
||||
fields:
|
||||
- user_id
|
||||
- parent_id
|
||||
- name
|
||||
- description
|
||||
- position
|
||||
|
||||
update:
|
||||
table: projects
|
||||
fields:
|
||||
- parent_id
|
||||
- name
|
||||
- description
|
||||
- position
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
delete:
|
||||
table: projects
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
55
config/apps/prokov/queries/statuses.yaml
Normal file
55
config/apps/prokov/queries/statuses.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
# Requêtes CRUD statuses
|
||||
|
||||
list:
|
||||
query: >
|
||||
SELECT id, project_id, code, name, color, position, created_at
|
||||
FROM statuses
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
order: "code ASC"
|
||||
|
||||
list_by_project:
|
||||
query: >
|
||||
SELECT id, project_id, code, name, color, position, created_at
|
||||
FROM statuses WHERE (project_id = :project_id OR project_id IS NULL)
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
order: "code ASC"
|
||||
|
||||
show:
|
||||
query: >
|
||||
SELECT id, project_id, code, name, color, position, created_at
|
||||
FROM statuses WHERE id = :id
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
create:
|
||||
table: statuses
|
||||
fields:
|
||||
- user_id
|
||||
- project_id
|
||||
- code
|
||||
- name
|
||||
- color
|
||||
- position
|
||||
|
||||
update:
|
||||
table: statuses
|
||||
fields:
|
||||
- project_id
|
||||
- code
|
||||
- name
|
||||
- color
|
||||
- position
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
delete:
|
||||
table: statuses
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
39
config/apps/prokov/queries/tags.yaml
Normal file
39
config/apps/prokov/queries/tags.yaml
Normal file
@@ -0,0 +1,39 @@
|
||||
# Requêtes CRUD tags
|
||||
|
||||
list:
|
||||
query: >
|
||||
SELECT id, name, color, created_at
|
||||
FROM tags
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
show:
|
||||
query: >
|
||||
SELECT id, name, color, created_at
|
||||
FROM tags WHERE id = :id
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
create:
|
||||
table: tags
|
||||
fields:
|
||||
- user_id
|
||||
- name
|
||||
- color
|
||||
|
||||
update:
|
||||
table: tags
|
||||
fields:
|
||||
- name
|
||||
- color
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
delete:
|
||||
table: tags
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
73
config/apps/prokov/queries/tasks.yaml
Normal file
73
config/apps/prokov/queries/tasks.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
# Requêtes CRUD tasks
|
||||
|
||||
list:
|
||||
query: >
|
||||
SELECT id, project_id, status_id, title, description, priority,
|
||||
date_start, date_end, time_estimated, time_spent, billing, position,
|
||||
created_at, updated_at
|
||||
FROM tasks
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
order: "position ASC"
|
||||
|
||||
list_by_project:
|
||||
query: >
|
||||
SELECT id, project_id, status_id, title, description, priority,
|
||||
date_start, date_end, time_estimated, time_spent, billing, position,
|
||||
created_at, updated_at
|
||||
FROM tasks WHERE project_id = :project_id
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
order: "position ASC"
|
||||
|
||||
show:
|
||||
query: >
|
||||
SELECT id, project_id, status_id, title, description, priority,
|
||||
date_start, date_end, time_estimated, time_spent, billing, position,
|
||||
created_at, updated_at
|
||||
FROM tasks WHERE id = :id
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
create:
|
||||
table: tasks
|
||||
fields:
|
||||
- user_id
|
||||
- project_id
|
||||
- status_id
|
||||
- title
|
||||
- description
|
||||
- priority
|
||||
- date_start
|
||||
- date_end
|
||||
- time_estimated
|
||||
- time_spent
|
||||
- billing
|
||||
- position
|
||||
|
||||
update:
|
||||
table: tasks
|
||||
fields:
|
||||
- project_id
|
||||
- status_id
|
||||
- title
|
||||
- description
|
||||
- priority
|
||||
- date_start
|
||||
- date_end
|
||||
- time_estimated
|
||||
- time_spent
|
||||
- billing
|
||||
- position
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
|
||||
delete:
|
||||
table: tasks
|
||||
filters:
|
||||
default: "user_id = :user_id"
|
||||
admin: ""
|
||||
Reference in New Issue
Block a user