MCPcopy
hub / github.com/nowork-studio/NotFair / createProject

Function createProject

notfair-cmo/src/server/db/projects.ts:36–79  ·  view source on GitHub ↗
(input: CreateProjectInput)

Source from the content-addressed store, hash-verified

34}
35
36export function createProject(input: CreateProjectInput): CreateProjectResult {
37 const db = getDb();
38 const slugInput = input.slug ?? input.display_name;
39 const slug = slugify(slugInput);
40 if (!slug.ok) return { ok: false, reason: slug.reason };
41
42 const existing = db.prepare("SELECT 1 FROM projects WHERE slug = ?").get(slug.slug);
43 if (existing) return { ok: false, reason: `project slug '${slug.slug}' already exists` };
44
45 const website_url = trimOrNull(input.website_url);
46 const codebase_path = trimOrNull(input.codebase_path);
47 const harness_adapter: HarnessAdapterId =
48 input.harness_adapter && isHarnessAdapterId(input.harness_adapter)
49 ? input.harness_adapter
50 : DEFAULT_HARNESS_ADAPTER;
51
52 const project: Project = {
53 id: randomUUID(),
54 slug: slug.slug,
55 display_name: input.display_name.trim(),
56 created_at: new Date().toISOString(),
57 archived_at: null,
58 google_ads_account_id: null,
59 meta_ads_account_id: null,
60 gsc_property_id: null,
61 website_url,
62 codebase_path,
63 harness_adapter,
64 };
65
66 db.prepare(
67 "INSERT INTO projects (id, slug, display_name, created_at, archived_at, google_ads_account_id, website_url, codebase_path, harness_adapter) VALUES (?, ?, ?, ?, NULL, NULL, ?, ?, ?)",
68 ).run(
69 project.id,
70 project.slug,
71 project.display_name,
72 project.created_at,
73 project.website_url,
74 project.codebase_path,
75 project.harness_adapter,
76 );
77
78 return { ok: true, project };
79}
80
81export function setProjectHarnessAdapter(
82 slug: string,

Callers 5

makeProjectFunction · 0.90
createProjectActionFunction · 0.90
makeProjectFunction · 0.90
projects.test.tsFile · 0.90

Calls 4

getDbFunction · 0.90
slugifyFunction · 0.90
isHarnessAdapterIdFunction · 0.90
trimOrNullFunction · 0.85

Tested by 2

makeProjectFunction · 0.72
makeProjectFunction · 0.72