1-- Insert/update feedgen with CTE to resolve actor_id
2-- Self-contained schema: No records table, metadata embedded directly
3-- Parameters: $1=actor_id, $2=rkey, $3=cid, $4=service_actor_id, $5=content_mode, $6=name,
4-- $7=description, $8=description_facets, $9=avatar_cid, $10=created_at
5INSERT INTO feedgens (
6 actor_id, rkey, cid, created_at, owner_actor_id, service_actor_id, content_mode, name,
7 description, description_facets, avatar_cid, accepts_interactions
8)
9SELECT
10 $1, -- actor_id (provided by caller)
11 $2, -- rkey (TEXT, provided by caller)
12 $3::bytea, -- cid (embedded)
13 $10, -- created_at (embedded)
14 $1, -- owner_actor_id (same as actor_id for feed generators)
15 $4, -- service_actor_id (passed as parameter, already ensured in executor)
16 $5::text::content_mode,
17 $6, -- name
18 $7, -- description
19 $8, -- description_facets
20 $9, -- avatar_cid
21 true -- Default accepts_interactions to true
22ON CONFLICT (actor_id, rkey) DO UPDATE SET
23 cid=EXCLUDED.cid,
24 service_actor_id=EXCLUDED.service_actor_id,
25 content_mode=EXCLUDED.content_mode,
26 name=EXCLUDED.name,
27 description=EXCLUDED.description,
28 description_facets=EXCLUDED.description_facets,
29 avatar_cid=EXCLUDED.avatar_cid,
30 status='complete'::feedgen_status
31RETURNING XMAX::text::int
32