// Path: src/main/java/com/mageddo/bookmarks/apiserver/res/TagV1Res.java
// public class TagV1Res {
// 
//   private Long id;
//   private String name;
//   private String slug;
// 
//   public static RowMapper<TagV1Res> mapper() {
//     return (rs, rowNum) -> new TagV1Res().setId(rs.getLong("ID"))
//         .setName(rs.getString("NAME"))
//         .setSlug(rs.getString("SLUG"));
//   }
// 
//   public Long getId() {
//     return id;
//   }
// 
//   public TagV1Res setId(Long id) {
//     this.id = id;
//     return this;
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public TagV1Res setName(String name) {
//     this.name = name;
//     return this;
//   }
// 
//   public String getSlug() {
//     return slug;
//   }
// 
//   public TagV1Res setSlug(String slug) {
//     this.slug = slug;
//     return this;
//   }
// }
// 
// Path: src/main/java/com/mageddo/bookmarks/entity/TagEntity.java
// public class TagEntity {
// 
//   private Integer id;
//   private String slug;
//   private String name;
//   private Integer bookmarkId;
// 
//   public static RowMapper<TagEntity> mapper() {
//     return (rs, rowNum) -> new TagEntity().setId(rs.getInt("IDT_TAG"))
//         .setName(rs.getString("NAM_TAG"))
//         .setSlug(rs.getString("COD_SLUG"))
//         .setBookmarkId(JdbcHelper.getInteger(rs, "IDT_BOOKMARK"));
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public TagEntity setName(String name) {
//     this.name = name;
//     return this;
//   }
// 
//   public Integer getId() {
//     return id;
//   }
// 
//   public TagEntity setId(Integer id) {
//     this.id = id;
//     return this;
//   }
// 
//   public String getSlug() {
//     return slug;
//   }
// 
//   public TagEntity setSlug(String slug) {
//     this.slug = slug;
//     return this;
//   }
// 
//   public Integer getBookmarkId() {
//     return bookmarkId;
//   }
// 
//   public TagEntity setBookmarkId(Integer bookmarkId) {
//     this.bookmarkId = bookmarkId;
//     return this;
//   }
// 
// }
// 
// Path: src/main/java/com/mageddo/bookmarks/utils/Tags.java
// public final class Tags {
//   private Tags() {
//   }
// 
//   public static Set<Tag> toTags(List<String> rawTags) {
//     if (rawTags == null) {
//       return Collections.emptySet();
//     }
//     return rawTags.stream()
//         .map(Tag::new)
//         .filter(it -> it.getSlug()
//             .length() > 0)
//         .collect(Collectors.toSet());
//   }
// 
//   static String toSlug(String name) {
//     return name.toLowerCase()
//         .replace("/[^a-z0-9\\ \\-_]+/g", "")
//         .trim()
//         .replace("/[\\ _]+/g", "\\-");
//   }
// 
// 
//   public static class Tag {
// 
//     private final String name;
//     private final String slug;
// 
//     public Tag(String name) {
//       this.name = name.trim();
//       this.slug = toSlug(name);
//     }
// 
//     public String getName() {
//       return name;
//     }
// 
//     public String getSlug() {
//       return slug;
//     }
//   }
// }


import java.util.List;
import com.mageddo.bookmarks.apiserver.res.TagV1Res;
import com.mageddo.bookmarks.entity.TagEntity;
import com.mageddo.bookmarks.utils.Tags;
package com.mageddo.bookmarks.dao;



public interface TagDAO {

  List<TagV1Res> findTags();

  List<TagEntity> findTags(long bookmarkId);

  List<TagEntity> findTags(String query);

// Path: src/main/java/com/mageddo/bookmarks/apiserver/res/TagV1Res.java
// public class TagV1Res {
// 
//   private Long id;
//   private String name;
//   private String slug;
// 
//   public static RowMapper<TagV1Res> mapper() {
//     return (rs, rowNum) -> new TagV1Res().setId(rs.getLong("ID"))
//         .setName(rs.getString("NAME"))
//         .setSlug(rs.getString("SLUG"));
//   }
// 
//   public Long getId() {
//     return id;
//   }
// 
//   public TagV1Res setId(Long id) {
//     this.id = id;
//     return this;
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public TagV1Res setName(String name) {
//     this.name = name;
//     return this;
//   }
// 
//   public String getSlug() {
//     return slug;
//   }
// 
//   public TagV1Res setSlug(String slug) {
//     this.slug = slug;
//     return this;
//   }
// }
// 
// Path: src/main/java/com/mageddo/bookmarks/entity/TagEntity.java
// public class TagEntity {
// 
//   private Integer id;
//   private String slug;
//   private String name;
//   private Integer bookmarkId;
// 
//   public static RowMapper<TagEntity> mapper() {
//     return (rs, rowNum) -> new TagEntity().setId(rs.getInt("IDT_TAG"))
//         .setName(rs.getString("NAM_TAG"))
//         .setSlug(rs.getString("COD_SLUG"))
//         .setBookmarkId(JdbcHelper.getInteger(rs, "IDT_BOOKMARK"));
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public TagEntity setName(String name) {
//     this.name = name;
//     return this;
//   }
// 
//   public Integer getId() {
//     return id;
//   }
// 
//   public TagEntity setId(Integer id) {
//     this.id = id;
//     return this;
//   }
// 
//   public String getSlug() {
//     return slug;
//   }
// 
//   public TagEntity setSlug(String slug) {
//     this.slug = slug;
//     return this;
//   }
// 
//   public Integer getBookmarkId() {
//     return bookmarkId;
//   }
// 
//   public TagEntity setBookmarkId(Integer bookmarkId) {
//     this.bookmarkId = bookmarkId;
//     return this;
//   }
// 
// }
// 
// Path: src/main/java/com/mageddo/bookmarks/utils/Tags.java
// public final class Tags {
//   private Tags() {
//   }
// 
//   public static Set<Tag> toTags(List<String> rawTags) {
//     if (rawTags == null) {
//       return Collections.emptySet();
//     }
//     return rawTags.stream()
//         .map(Tag::new)
//         .filter(it -> it.getSlug()
//             .length() > 0)
//         .collect(Collectors.toSet());
//   }
// 
//   static String toSlug(String name) {
//     return name.toLowerCase()
//         .replace("/[^a-z0-9\\ \\-_]+/g", "")
//         .trim()
//         .replace("/[\\ _]+/g", "\\-");
//   }
// 
// 
//   public static class Tag {
// 
//     private final String name;
//     private final String slug;
// 
//     public Tag(String name) {
//       this.name = name.trim();
//       this.slug = toSlug(name);
//     }
// 
//     public String getName() {
//       return name;
//     }
// 
//     public String getSlug() {
//       return slug;
//     }
//   }
// }


// Path: src/main/java/com/mageddo/bookmarks/dao/TagDAO.java
import java.util.List;
import com.mageddo.bookmarks.apiserver.res.TagV1Res;
import com.mageddo.bookmarks.entity.TagEntity;
import com.mageddo.bookmarks.utils.Tags;

package com.mageddo.bookmarks.dao;



public interface TagDAO {

  List<TagV1Res> findTags();

  List<TagEntity> findTags(long bookmarkId);

  List<TagEntity> findTags(String query);

  void createIgnoreDuplicates(Tags.Tag tag);