update databasing system with minimum API, schema parsing and FreeCAD
integration
This commit is contained in:
35
migrations/002_sequence_by_name.sql
Normal file
35
migrations/002_sequence_by_name.sql
Normal file
@@ -0,0 +1,35 @@
|
||||
-- Migration: 002_sequence_by_name
|
||||
-- Adds a sequence table that uses schema name instead of UUID for simpler operation
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- Create a simpler sequences table using schema name
|
||||
CREATE TABLE IF NOT EXISTS sequences_by_name (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
schema_name TEXT NOT NULL,
|
||||
scope TEXT NOT NULL,
|
||||
current_value INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(schema_name, scope)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sequences_by_name ON sequences_by_name(schema_name, scope);
|
||||
|
||||
-- Function to get next sequence by schema name
|
||||
CREATE OR REPLACE FUNCTION next_sequence_by_name(
|
||||
p_schema_name TEXT,
|
||||
p_scope TEXT
|
||||
) RETURNS INTEGER AS $$
|
||||
DECLARE
|
||||
v_next INTEGER;
|
||||
BEGIN
|
||||
INSERT INTO sequences_by_name (schema_name, scope, current_value)
|
||||
VALUES (p_schema_name, p_scope, 1)
|
||||
ON CONFLICT (schema_name, scope) DO UPDATE
|
||||
SET current_value = sequences_by_name.current_value + 1
|
||||
RETURNING current_value INTO v_next;
|
||||
|
||||
RETURN v_next;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user