Skip to content

Releases: JacobLinCool/neo4j-ogm

neo4j-ogm@1.0.0-dev.2

05 Feb 10:10
3c696f3
Compare
Choose a tag to compare
neo4j-ogm@1.0.0-dev.2 Pre-release
Pre-release

Minor Changes

typed-cypher@1.0.0-dev.1

04 Feb 20:20
1971b04
Compare
Choose a tag to compare
Pre-release

Major Changes

  • 6923f48 Thanks @JacobLinCool! - Make this package type only

    Support three main features:

    • Params: Parse parameters from a Cypher query
    • Vars: Parse living variables in a Cypher query
    • Returns: Parse return types from a Cypher query

typed-cypher@1.0.0-dev.0

04 Feb 08:58
244b70d
Compare
Choose a tag to compare
Pre-release

Major Changes

neo4j-ogm@1.0.0-dev.1

04 Feb 20:20
1971b04
Compare
Choose a tag to compare
neo4j-ogm@1.0.0-dev.1 Pre-release
Pre-release

Patch Changes

  • Updated dependencies [6923f48]:
    • typed-cypher@1.0.0-dev.1

neo4j-ogm@1.0.0-dev.0

04 Feb 08:58
244b70d
Compare
Choose a tag to compare
neo4j-ogm@1.0.0-dev.0 Pre-release
Pre-release

Major Changes

  • 8267937 Thanks @JacobLinCool! - Define models:

    Use zod to define types.

    const driver = neo4j.driver(NEO4J_URI, neo4j.auth.basic(NEO4J_USER, NEO4J_PASSWORD));
    
    const db = new DB(driver)
    	.define("User", {
    		name: z.string(),
    		email: z.string(),
    		FOLLOWS: MANY("User", { since: z.date() }),
    		POSTS: MANY("Post", { at: z.date() }),
    		LIKES: MANY("Post", { at: z.date() }),
    	})
    	.define("Post", {
    		title: z.string(),
    		content: z.string(),
    		INCLUDES: MANY("Media"),
    	})
    	.define("Media", {
    		url: z.string(),
    		type: z.string(),
    		size: z.bigint(),
    		UPLOADED_BY: ONE("User"),
    	});

    Create nodes:

    const jacob = await db.create("User", {
    	name: "Jacob",
    	email: "hi@jacoblin.cool",
    });
    
    jacob.name; // "Jacob"
    jacob.email; // "hi@jacoblin.cool"
    
    const post = await db.create("Post", {
    	title: "Hello World",
    	content: "This is my first post!",
    });
    
    post.title; // "Hello World"
    post.content; // "This is my first post!"

    Create relationships:

    const rel = await jacob.POSTS(post, { at: new Date() });
    
    // rel.$from(); // jacob
    // rel.$to(); // post
    // rel.at; // Date

    Get relationships:

    const posts = await jacob.POSTS();
    
    // (await posts[0].$to()).title; // "Hello World"

Minor Changes

  • 8267937 Thanks @JacobLinCool! - Support custom $id generator

  • 8267937 Thanks @JacobLinCool! - Find nodes

    Find all User:

    const users = await db.find("User");

    Find User by property:

    const users = await db.find("User", {
    	where: { name: "Jacob Lin" },
    });

    Sort the results:

    const users = await db.find("User", {
        order: ["name", "ASC"],
    });
    
    // sort by multiple fields
    const users = await db.find("User", {
        order: [
            ["name", "DESC"],
            ["email", "ASC"],
        ],
    });

    Limit the results:

    const users = await db.find("User", {
    	limit: 1,
    });

Patch Changes

  • Updated dependencies [b771723]:
    • typed-cypher@1.0.0-dev.0